编译Boost 1.65.1遇LNK1104错误:无法打开指定库文件求助
解决Visual Studio 2017编译Boost 1.65.1时LNK1104错误的方案
确认Boost库是否正确编译
你遇到的错误指向的boost_date_time-vc141-mt-1_65_1.lib是动态多线程版本的库,Boost默认不会编译所有组件,需手动生成:- 打开VS2017开发者命令提示符,进入Boost 1.65.1根目录
- 运行
bootstrap.bat生成b2.exe工具 - 执行编译命令:
b2 toolset=msvc-14.1 threading=multi link=shared - 检查
boost_1_65_1/stage/lib目录下是否存在目标lib文件
核对附加库目录路径
确保VS项目的附加库目录指向Boost编译后生成lib文件的stage/lib目录,而非源码中的lib文件夹。同时注意项目当前的Debug/Release模式要和编译的Boost库版本匹配——Debug模式对应带-gd后缀的库,Release模式对应无后缀的版本。检查预处理器定义的冲突
你同时添加了BOOST_ALL_NO_LIB和BOOST_ALL_DYN_LINK,前者会禁用Boost自动链接功能,若代码中存在隐式链接boost_date_time的逻辑,就会找不到库。建议去掉BOOST_ALL_NO_LIB,仅保留BOOST_ALL_DYN_LINK,让Boost自动处理动态链接。验证库文件名匹配
确认项目中实际需要的库文件名和编译生成的完全一致,比如Debug模式下库文件名应为boost_date_time-vc141-mt-gd-1_65_1.lib,若当前项目是Debug模式却在找无-gd的版本,就会触发错误。
内容的提问来源于stack exchange,提问作者himanshu karnalkar
相关产品推荐
相关产品推荐

