我们有一个用 C(不是 cpp)编写的大型静态库,其中包含如下定义的函数:
StructThing* __cdecl DoSomething(); // in header
StructThing* __cdecl DoSomething() { ... } // in .C file
在我们基于 C 的产品中使用它一切正常,但我们已经开始转向这个叫做 c++ 的新事物!
但是当我们尝试在 cpp 文件中使用 DoSomething 时,我们会在链接时遇到无法解析的外部符号错误。
看起来 cpp 编译器正在寻找函数的修饰版本。
我们怎样才能使符号(函数)对 cpp 编译器可用?最好不要更改源库(太多),我的第一个想法是通过 .def 文件,但它似乎被静态库解决方案忽略了(不确定是否适用于那种 vs 项目)
但这应该很容易,我假设 Windows API 的编写有点像这样。
有人吗?
VS 2012 更新 3
TIA
最佳答案
啊,它会出现“经典”
#ifdef __cplusplus
extern "C" {
#endif
...
#ifdef __cplusplus
}
#endif
关于c++ - 链接到用 C/windows 编写的静态库中提供的函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18401652/