1

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

我正在尝试在我相对缺乏经验的 linux 下重新创建相同的东西。据我了解,在 NIX 系统下,所有功能都是默认导出的。考虑到这一点,我创建了一个共享对象,我通过 nm 命令运行了它。

我很惊讶地发现,与 Windows 不同,我的函数名称被弄乱了!

请问我该如何防止这种情况?

4

1 回答 1

9

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

于 2012-05-25T15:48:10.920 回答