我确实使用了从互联网上找到的这种链接的代码段,它确实有效。现在我想对这个主题有更多的了解,即如果我的C ++代码将由非C ++代码导出/链接,我应该注意什么。有人能指出我对此有用的任何资源吗?感谢。
答案 0 :(得分:5)
使用extern "C"
功能...请参阅here。这允许在“C”级别进行接口,这可能更像是“跨平台/语言”。
答案 1 :(得分:5)
本机代码互操作性的关键概念是name mangling和calling conventions。
但真正的一点是,一般来说,如果你希望你的代码可以从其他语言中调用(你没有在你的问题中指定任何语言),你必须采用最低公分母方法。通常这意味着避免对象和功能思考,将代码包装在DLL中并使用C风格的界面。您可能必须使用STDCALL调用约定来定义DLL的api函数。
此外,如果您在界面中使用结构,则必须担心结构打包。例如,为了使用打包记录与Delphi进行适当的互操作,我认为你必须在C编译器中将struct member alignment设置为1个字节。
答案 2 :(得分:0)
答案 3 :(得分:0)
另外....结合Bob Moore的答案......你可以使用#ifdef
防止名称损坏#ifdef __cplusplus extern "C" { #endif /* function prototypes and global variable declarations */ #ifdef __cplusplus } #endif
我__cplusplus
中的<stddef.h>
指令被定义为我所知的标准......
希望这有帮助, 最好的祝福, 汤姆。