c++ - 两个动态库,一个在 C 中,另一个在 C++ 中,彼此使用

标签 c++ c shared-libraries

喂,

我有一个动态库加载器,它是用 C++ 编写的,但提供了与 C 兼容的 API。

该加载器可以加载用任何编程语言编写的模块。它们排列在一个命名列表中,可以请求其他模块的函数指针。现在,用 C 编写并使用 C 编译器编译的模块获取任何其他用 C++ 编写和编译的模块的函数指针

所以我的问题是:函数指针交叉编译器有效吗?我想我很久以前就听说过类似 __cdecl 的东西。我使用 Linux 64 位。

T.I.A.

最佳答案

// my C++ code ...
extern "C" {
  void thisFunctionWillBeCallableFromC();
}

void butThisOneMayNot();

struct S
{
    void thisDefinitelyWontBeCallableFromC(std::map<int, S>);
};

C++ 代码应使用 extern "C" 链接声明接口(interface),以便从 C 调用。

或者您的意思是不同编译器生成的 C++ 代码?

关于c++ - 两个动态库,一个在 C 中,另一个在 C++ 中,彼此使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228110/

相关文章:

c - 如何在 c 中的两个程序之间共享库

shared-libraries - 使用 Cargo 选择共享库或静态库

c++ - QProcess::execute ("clear") 问题

c++ - 范围解析运算符的评估

c++ - 多个线程写入同一个套接字导致问题

c++ - 我可以在同一进程中运行多个 Ruby 解释器实例吗?

c++ - C++中如何判断一个字符是否合法

c++ - OpenGL 纹理三角形

c++ - 调试断言失败 VS2010

linux - 程序错误 : ./程序 : error while loading shared libraries: lib<xxx>. 所以:无法打开共享对象文件:没有这样的文件或目录