gpt4 book ai didi

c++ - 链接到用 C/windows 编写的静态库中提供的函数不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:41 24 4
gpt4 key购买 nike

我们有一个用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com