c++ - Visual Studio LNK1104 而不是 LNK2019

标签 c++ visual-studio opencv boost boost-asio

我不明白 Visual Studio(对我来说是 2015)如何从头文件中检测到 .lib 文件名。

示例 1
我用 boost/asio编写一个简单的程序来通过 HTTP 请求进行连接。源文件包括<boost/asio.hpp>在它的上面。我还配置了C/C++ / General / Additional Include Directories指向 boost 的文件夹。
之后,我构建解决方案并遇到错误:

Error LNK1104 cannot open file 'libboost_system-vc140-mt-gd-1_61.lib'

但我不知道 Visual Studio 在哪里找到名称 libboost_system-vc140-mt-gd-1_61.lib从。
- 正在寻找 Linker / Input / Additional Dependencies / Edit...对于评估值和继承值,没有名为 libboost_system-vc140-mt-gd-1_61.lib 的项目
- 我认为在<boost/asio.hpp>它以某种方式向编译器设置了一些信息:“如果你需要 lib 文件,请查找 libboost_system-vc140-mt-gd-1_61.lib,它是我的实现”,但我在 boost 文件夹中搜索,没有源文件包含“libboost_system-vc140-mt-gd-1_61.lib”
enter image description here


一般来说,如果某个函数在头文件中声明,而 Visual Studio 无法归档它的实现,LNK2019: unresolved external symbol ...将被抛出。
那么如果它的实现在abcxyz.lib文件,用户转到 Linker / Input / Additional Dependencies并添加 abcxyz.lib , 没有 指定包含 .lib 文件的文件夹 Linker / General / Additional Libary Directories .在这种情况下,Error LNK1104 cannot open file 'abcxyz.lib'会被抛出

那么,为什么上面的例子遇到的是LNK1104错误,而不是LNK2019错误呢?

示例2
我正在为一个使用 OpenCV 2.4.10 库的项目工作。在分发中,他们给了我带有源代码的项目,但没有将库附加给我。
然后,我下载最新的 OpenCV 2.4.13 并为项目设置,例如附加包含文件夹、附加库文件夹、附加依赖项 ( opencv_core2413.lib )。
一切看起来都很好,但是当我构建项目时,它给了我错误:

Error LNK1104 cannot open file 'opencv_core2410d.lib'

我看过Linker \ Input \ Additional Dependencies在评估值(包含opencv_core2413.lib)和继承值上,但没有名为'opencv_core2410d.lib'的项目。
尝试查看该项目应用的另一个共享属性表,但没有名为“opencv_core2410d.lib”的条目
我想删除这个条目,但找不到它在哪里

那么,这里发生了什么?任何人都可以为我解释一下吗?谢谢

最佳答案

LNK1104 让您知道您需要在 Library Directories 中设置库位置。

boost::asio 依赖于 boost::system 来获取错误消息。 boost::system 不是只有头文件的库。

您需要将 boost 库的位置添加到解决方案属性页上 VC++ Directories 下的 Library Directories

如果您还没有构建 boost 库,可以阅读一篇如何构建的文章 here或者您可以从 here 下载.

OpenCV 库的位置添加到您的解决方案的属性页应该修复示例 2

关于c++ - Visual Studio LNK1104 而不是 LNK2019,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38422700/

相关文章:

python - 使用 OpenCV python 在一个窗口中结合多个 Canny 边缘检测

c++ - 函数包装器中的堆栈分配/函数中的分配

c++ - 我们可以使用 mfc 应用程序创建 pdf 文件吗?

c# - Windows 服务模板丢失?

asp.net - IIS 7.0/Visual Studio 2010 - 页面的相关配置数据无效

asp.net - 如何打破 ASP.NET 中未处理的异常?

android - 如何知道OpenCv4Android native中是否使用了GPU计算

c++ - 在集合 0-N 中找到基数 C 的所有可能子集

c++ - C++中的字符串加法关联性

opencv - 如何在Windows中使用PGI运行OpenACC + OpenCV?