在Visual Studio 2017 Windows环境下无法构建Boost x64库
解决Boost x64构建仍生成x86库的问题
我之前也碰到过一模一样的坑——明明指定了x64参数,结果出来的还是x86库,大概率是构建残留没清干净、环境没选对或者参数配置有歧义导致的。给你几个针对性的解决步骤:
1. 彻底清理构建残留(关键!)
Boost的b2工具会在源码目录下的bin.v2文件夹里存构建中间产物,就算你删了stage/x64目录,这个文件夹里的旧缓存还是会干扰新构建:
- 直接删除Boost根目录下的
bin.v2文件夹 - 同时清空你指定的
stage/x64目录,确保没有旧的x86库残留
2. 切换到正确的MSVC命令行环境
Windows下构建x64库必须用x64版本的VS命令提示符,不能用默认的x86环境:
- 如果你用的是VS2017(对应
msvc-14.1),找到「x64 Native Tools Command Prompt for VS 2017」并打开 - 全程在这个命令行窗口里操作,切换到Boost根目录后再执行构建命令
3. 修正构建命令的参数(避免歧义)
有时候参数顺序和写法会影响b2的解析,建议调整参数顺序,并明确指定架构:
b2.exe -j4 toolset=msvc-14.1 address-model=64 architecture=x86_64 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64
注意:把原来的architecture=x86改成architecture=x86_64,虽然address-model=64已经能指定64位,但明确写x86_64能彻底避免架构歧义。
4. 检查project-config.jam的硬编码配置
如果你的project-config.jam里写死了x86相关配置,会直接覆盖命令行参数:
- 打开Boost根目录下的
project-config.jam - 查找是否有类似
using msvc : 14.1 : : : address-model=32 ;的行,要是有,把address-model改成64,或者直接删掉这一行,让命令行参数生效
验证结果
构建完成后去stage/x64/lib目录看库文件名,比如boost_thread-vc141-mt-x64-1_81.lib(假设Boost版本是1.81),文件名里的x64就说明是正确的64位库了。
内容的提问来源于stack exchange,提问作者Qizot
相关产品推荐
相关产品推荐

