gpt4 book ai didi

c++ - 未解析的外部符号,带有使用另一个静态库的静态库

转载 作者:行者123 更新时间:2023-11-28 02:04:56 26 4
gpt4 key购买 nike

我有一个 C++ 程序 ProgramA,它是一个具有静态库 LibraryB 的可执行文件,后者又依赖于另一个未在我的项目中编译的静态库(实际上是 libcurl)。

现在,在 OSX 上这很好用。我确保链接 libcurl 和 ProgramA 以及 LibraryB 编译并且 ProgramA 运行良好。

但是,在 Windows 上,我不断收到链接错误:

错误 LNK2019:函数中引用的未解析外部符号 __imp_curl_global_init

我已经双重和三次检查我是否将 libcurl 静态库链接到项目中。实际上,在 Visual Studio 解决方案中,我有另一个可执行文件 ProgramB,它不使用 LibraryB 而是直接引用 libcurl 库,这工作正常。除非我包含 LibraryB,否则 Unresolved 错误会再次出现。

建议?想法?谢谢!

最佳答案

问题是您链接的是库的静态版本,但构建库的共享版本 (DLL)。针对共享版本构建符号时,使用 __declspec(export)(或 .def 文件)导出符号,这会导致编译器将 __imp 添加到导出符号名称的开头.

要解决此问题,您可以将 CURL_STATICLIB 添加到依赖项目的预处理器定义中,以正确构建静态库。

关于c++ - 未解析的外部符号,带有使用另一个静态库的静态库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37909563/

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