【发布时间】:2021-02-08 21:22:16
【问题描述】:
目前我有 3 个视觉工作室项目:
- 控制台应用程序
- 逻辑
- 测试
这些项目都在同一个解决方案中。在 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 项目包含到控制台应用程序中,我执行了相同的 3 个步骤并将 Logic.lib 添加到控制台应用程序项目中。一切正常,直到我开始使用使用外部 curl 库的类。当我使用这些类时,我得到一个链接错误:未解析的外部符号(LNK 2019)。我已经尝试了很多来解决这个问题,但似乎我无法解决它。我做错了什么导致这不起作用吗?
我还希望能够像在我的测试项目中的 ConsoleApplication 中一样使用我的逻辑项目。有关我拆分这些项目的更多背景信息,请参阅我之前的问题Use c++ classes from console application class in other project visual studio
【问题讨论】:
-
我希望您以某种方式弄乱了设置,并且在您看到错误的项目中没有正确链接到 curl.lib。确保为所有配置添加设置。
-
是的,我为所有四种配置都指向了正确的 lib 文件,即使是 x64 或 x86 也是如此。当我在 x86 或 x64 中调试或发布时运行我的控制台应用程序时,它都会产生相同的错误。我还在没有库项目的控制台应用程序中测试了 lib 文件,并且可以正常工作
-
您为控制台应用程序添加了 curl.lib?添加 logic.lib 是不够的。
-
有一个设置可以做到这一点:https://stackoverflow.com/a/61689250/487892
-
我已经将 curl.lib 添加到我的控制台应用程序中。当我直接从控制台应用程序调用 curl 时,它可以工作。但是当我使用库中使用 curl 的类时,我得到了同样的错误。当我同时使用我的课程并直接使用 curl 时,它突然起作用了。但我收到警告(LNK4217)
标签: c++ visual-studio linker dependencies static-libraries