你好!
我正在使用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++ > Code Generation > Runtime Library
中的设置从MT / MTd更改为我已经完成的MD / MDd。它还说了一些bjam.exe程序,我没有在我的boost目录中找到它。
尽管我的尝试,再次LNK1104
错误。我该怎么办?
由于Visual Studio
既是32位编译器又是64位编译器,因此您可以使用它链接不少于16种不同类型的库,即组合:
此外,由于boost
和Visual Studio
都有不同的版本,因此可能有比上述16种更多的组合!幸运的是,boost
支持与Visual Studio
的自动链接,请参阅:How Boost automatically includes libraries。因此,链接器错误中的文件名提供了一些关于boost
库Visual Studio
正在搜索的类型的线索:
链接:致命错误LNK1104:无法打开文件'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
仍然在寻找静态的32位版本的boost::filesystem
,尽管你改变了你的设置......
要修复它,可以按照以下说明下载32位静态库或构建自己的boost库:Building boost for Visual Studio。
注意:无论选择哪个选项,您仍然会收到编译器警告:
未知的编译器版本 - 请运行配置测试并报告结果
因为,当前版本的Visual Studio
是在boost 1.66
之后发布的。
当使用较旧版本的boost
和较新的编译器时,这是一个常见的警告。
不是将\ libs目录添加到库路径,而是添加\ lib64-msvc-14.1目录。