在发布模式下将程序链接到boost :: filesystem模块的过程中,我得到下一个错误:
错误LNK1104:无法打开文件'libboost_filesystem-vc100-mt-s-1_49.lib'
但是,在boost\stage\lib目录中,我只有下一个库引用文件系统模块:
libboost_filesystem-VC100-MT-1_49.lib
libboost_filesystem-VC100-MT-GD-1_49.lib
我的问题是:
为什么VC++要求'libboost_filesystem-vc100-mt-s-1_49.lib?
我应该更改哪个编译器/链接属性以使编译器要求libboost_filesystem-vc100-mt-1_49.lib?
更新:我的VC2010 ++解决方案有2个项目,包括以前的boost库:x是一个库,y(主程序)调用x.
sec*_*ask 30
您正在使用/ MT或/ MTd选项,C/C++/Code Generation/Runtime Library
其中需要静态库,使用共享库输出来提升默认构建.您可以切换Runtime Library
到/ MD或/ MDd.另一个选择是使用静态库输出重新编译boost,你会得到'libboost_filesystem-vc100-mt-s-1_49.lib'..
kal*_*yer 21
我最近的一个项目遇到了类似的问题(继承了很长的遗产).
这是这个问题的" 穷人 "解决方案:
使用所有变体重建boost库,以确保您具有满足您需求的正确变体.
跑:
.\b2 --build-type=complete
Run Code Online (Sandbox Code Playgroud)
请注意,使用此选项时,提升构建时间显然会更长.
这不是一个优雅的解决方案,但我没有时间搞清楚我的项目需要哪个确切的选项,所以我只是构建它们.
你可以将以下字符粘贴到你的控制台(win + r ---- cmd,然后转到boost src目录,找到bjam.exe)ps:双击bootstrap.bat即可获取bjam.exe
bjam --toolset=msvc-1.0 --stagedir=./lib_x64 --builddir=./ address-model=32 link=static variant=release runtime-link=static threading=multi stage debug releasde
libboost_filesystem-vc100-mt-s-1_49.lib
"link=static" correspond to -s-
"threading=multi" correspond to -mt-
"runtime-link=static" correspond to lib prefix
"variant=release" make sure libboost_filesystem-vc100-mt-s-1_49.lib don't contain -gd-
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56861 次 |
最近记录: |