与非C ++代码的链接

时间:2010-01-07 11:11:22

标签: c++

我确实使用了从互联网上找到的这种链接的代码段,它确实有效。现在我想对这个主题有更多的了解,即如果我的C ++代码将由非C ++代码导出/链接,我应该注意什么。有人能指出我对此有用的任何资源吗?感谢。

4 个答案:

答案 0 :(得分:5)

使用extern "C"功能...请参阅here。这允许在“C”级别进行接口,这可能更像是“跨平台/语言”。

答案 1 :(得分:5)

本机代码互操作性的关键概念是name manglingcalling 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>指令被定义为我所知的标准......

希望这有帮助, 最好的祝福, 汤姆。