将外部库包含到我自己的库项目C ++ Visual Studio中

问题描述

目前我有3个Visual Studio项目:

  • ConsoleApplication
  • 逻辑
  • 测试

这些项目都在同一解决方案中。在Logic项目中,我使用一个名为curl的外部库。我的逻辑项目是使用Visual Studio中的“新项目”向导创建的静态库。该项目包括一个pch.h文件。我在Logic项目属性添加了以下内容

  1. C/C++ > General > Additional Include Directories设置为带有curl头文件文件
  2. Libarian > General > Additional Library Directories设置到其中带有curl.lib的文件夹。
  3. 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)