避免在 Linux 下的共享对象 C 接口上重整名称
Avoid name mangling on a shared object C interface under linux
在Windows下,我们有一个C接口(extern "C" {//interface })到我们的C++库,它使用模块定义文件(.def)导出未修改的函数。
我正在尝试在 linux 下重新创建同样的东西,而我相对缺乏经验。我知道在NIX系统下,默认情况下会导出所有功能。考虑到这一点,我创建了一个共享对象,并通过 nm 命令运行了该对象。
我很惊讶地发现,与在窗口中不同,我的函数名称被破坏了!
请问我该如何防止这种情况?
通常的解决方案是将函数声明extern "C"
。 这不仅会导致名称像在 C 中一样被破坏,而且还会导致函数使用 C 调用约定。
相关文章:
- 在C ++ ASIO中,如何为HTTP或HTTPS创建相同的套接字对象(接口/抽象问题?
- 无法使用接口类型对priority_queue中的对象进行排序<T>
- 防止通过接口删除对象
- 如何通过接口将函子分配给函数对象
- C++接口实现和子类化对象识别
- 2 个 COM 对象,并在另一个对象中使用其中一个对象的接口
- 在构造函数处将类对象强制转换为接口始终返回 NULL
- 尝试向 COM 对象添加另一个接口时出现静态强制转换错误 C2440
- C++ 中的 if 语句中的接口对象
- 我们可以在同一对象中实现多个QtRO接口吗?
- C++实现相同接口的对象/类之间的数据共享
- neak_ptr vs unique_ptr参考 - 传递接口inmand tos to其他对象
- 如何使用 word 对象模型中的C++接口在 word 中添加自定义 XML 艺术
- OOP - 存储对象和服务接口
- 如何在接口类中创建一个超类对象
- Python - 导入 c++ 模块接口 - 无法打开共享对象文件
- 如何为对象提供不同的接口(最佳)
- 如何将接口对象强制转换为特定的继承对象
- 对于range (c++11)使用虚接口对象
- 带有接口对象的c++模板