我知道这个。
从 C++ 调用 C 函数:
如果我的应用程序是用 C++ 编写的,并且我必须从用 C 编写的库中调用函数。那么我会使用
//main.cpp
extern "C" void C_library_function(int x, int y);//prototype
C_library_function(2,4);// directly using it.
这不会破坏名称 C_library_function
并且链接器会在其输入 *.lib 文件中找到相同的名称,问题就解决了。
从 C 调用 C++ 函数???
但是在这里我扩展了一个用 C 编写的大型应用程序,我需要使用一个用 C++ 编写的库。 C++ 的名称修改在这里造成了麻烦。链接器正在抱怨未解析的符号。好吧,我不能在我的 C 项目上使用 C++ 编译器,因为那会破坏很多其他东西。出路是什么?
顺便说一句,我正在使用 MSVC
原文由 claws 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要创建一个 C API 来公开 C++ 代码的功能。基本上,您将需要编写声明为 extern “C” 并且具有包装 C++ 库的纯 C API(例如,不使用类)的 C++ 代码。然后使用您创建的纯 C 包装库。
您的 C API 可以选择遵循面向对象的风格,即使 C 不是面向对象的。前任: