gpt4 book ai didi

c++ - Boost 库和 Visual Studio (C++) 有问题

转载 作者:行者123 更新时间:2023-11-30 01:38:23 28 4
gpt4 key购买 nike

您好!

我正在使用 Visual Studio 2017,我最近尝试在我的一个项目中实现 Boost 库,但这似乎不起作用。我总是遇到链接问题,并且总是遇到相同的错误 1>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc141-mt-gd-x32-1_66.lib'。 (这是为了

#include <boost/filesystem.hpp>

代码。我尝试链接的所有库都出现相同的错误)

我下载了 Boost 网页提供的二进制文件,并安装了它。我还尝试在 C/C++ > General > Additional include Directory 设置中添加以下内容:

C:\local\boost_1_66_0

以及我添加的 Linker > General > Additional library Directory 设置

C:\local\boost_1_66_0\libs

并且我关闭了“使用预编译头文件”。 (以上内容由Boost网页推荐)

此处的线程“Linker error LNK1104 with 'libboost_filesystem-vc100-mt-s-1_49.lib'”还建议将我在 C/C++ > 代码生成 > 运行时库 中的设置从 MT/MTd 更改为 MD/MDd,我已经完成了。它还说了一些关于 bjam.exe 程序的内容,我在我的 boost 目录中没有找到它。

尽管我尝试了,还是 LNK1104 错误。我该怎么办?

最佳答案

由于 Visual Studio 既是 32 位编译器又是 64 位编译器,因此有不少于 16 种不同类型的库可以与之链接,即:

  • 32 位或 64 位,
  • 共享或静态库,
  • 调试或发布
  • 以及单线程或多线程。

此外,由于 boostVisual Studio 有不同的版本,因此可能有比上述 16 种更多的组合!幸运的是,boost 支持与 Visual Studio 的自动链接,参见:How Boost automatically includes libraries .因此,链接器错误中的文件名提供了一些关于 boostVisual Studio 正在搜索的确切类型的线索:

LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc141-mt-gd-x32-1_66.lib'

根据此处的答案:How can I decode the boost library naming? , Visual Studio 正在搜索 boost 1.66 filesystem 库的多线程调试版本。

我也从经验中知道 Visual Studio 静态库以 libboost_ 开头,而共享库以 boost_ 开头,有人更改了 boost 命名系统在boost 1.66 中给名称加上大小(-x32-x64),导致没有结束现有构建系统的麻烦,例如CMake !

因此 Visual Studio 仍在搜索 boost::filesystem 的静态 32 位版本,尽管更改了您的设置...

要修复它,请下载 32 位静态库或按照此处的说明构建您自己的 boost 库:Building boost for Visual Studio .

注意:无论您选择哪个选项,您仍然会收到编译器警告:

Unknown compiler version - please run the configure tests and report the results

因为 Visual Studio 的当前版本是在 boost 1.66 之后发布的。
这是将旧版本的 boost 与较新的编译器一起使用时的常见警告。

关于c++ - Boost 库和 Visual Studio (C++) 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48038406/

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