避免在linux下的共享对象C接口上进行名称修改

dan*_*ave 1 c c++ linux name-mangling shared-objects

在Windows下,我们有一个C接口(extern"C"{// interface})到我们的C++库,它使用模块定义文件(.def)导出未编码的函数.

我试图在linux下重新创建相同的东西,我相对缺乏经验.据我所知,在NIX系统下,默认情况下会导出所有函数.考虑到这一点,我创建了一个共享对象,我通过nm命令运行.

我很惊讶地看到,与Windows不同,我的功能名称已被破坏!

我该怎么办呢?

Jam*_*nze 9

通常的解决方案是声明功能extern "C".这不仅会导致名称在C中被破坏,而且还会导致函数使用C调用约定.

  • 像在C中被破坏因此没有被破坏:)? (3认同)