c++ - 避免在 Linux 下的共享对象 C 接口(interface)上进行名称重整

标签 c++ c linux shared-objects name-mangling

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

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

我很惊讶地发现,与在 Windows 中不同,我的函数名称被破坏了!

请问我怎样才能避免这种情况?

最佳答案

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

关于c++ - 避免在 Linux 下的共享对象 C 接口(interface)上进行名称重整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757421/

相关文章:

c - 如何声明函数一次传递一个参数 argv[i]?在C中

c - weak_alias 函数的作用是什么,它在哪里定义

linux - 如何从命令行删除 unix(Mac OSX) 中名为 "-d"的文件?

linux - linux内核页表更新

c++ - stdlib 是否提供类型列表?

c++ - 构造函数返回错误,动态内存C++

c - 您对C单元测试框架有何建议?

CreateFile/readfile & writefile 多线程 - 无效句柄

c++ - object.operator bool() 和 (bool) 对象有什么区别?

c++ - 意外的字符串流行为