问题描述
- ConsoleApplication
- 逻辑
- 测试
这些项目都在同一解决方案中。在Logic项目中,我使用一个名为curl的外部库。我的逻辑项目是使用Visual Studio中的“新项目”向导创建的静态库。该项目包括一个pch.h文件。我在Logic项目属性中添加了以下内容:
- 将
C/C++ > General > Additional Include Directories
设置为带有curl头文件的文件夹 - 将
Libarian > General > Additional Library Directories
设置到其中带有curl.lib的文件夹。 - 将
Libarian > General > Additional Dependencies
设置为curl.lib。
现在,当我构建Logic项目时,输出为Logic.lib文件。我用DUMPBIN / SYMBOLS / EXPORTS Logic.lib检查了Curl函数是否确实在lib文件中。
要将Logic项目包含在Console应用程序中,我执行了相同的3个步骤,并将Logic.lib添加到Console应用程序项目中。一切正常,直到我开始使用使用外部curl库的类。当我使用这些类时,我得到一个链接错误:未解析的外部符号(LNK 2019)。我已尽力解决此问题,但似乎我无能为力。我做错了什么导致它无法正常工作吗?
我还希望能够像在测试项目中的ConsoleApplication中一样使用逻辑项目。有关更多背景信息,为什么我拆分了这些项目,可以在我之前的问题Use c++ classes from console application class in other project visual studio
中找到解决方法
因此,经过数小时的研究,我发现了这篇文章,我认为这也适用于我的案例:Linking static libraries to other static libraries
TL; DR静态库不与其他静态库链接
因此,我认为最好的解决方案是将静态逻辑库转换为动态库(DLL)