You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下使用b2编译Boost时如何指定/MTd而非/MDd运行库

Windows平台Boost 1.72静态调试版(/MTd)编译配置

link=static 仅控制Boost库自身输出为静态.lib文件,和CRT运行时的链接选项没有绑定关系。b2默认将CRT链接模式设为动态,对应/MD、/MDd选项,这就是配置后仍默认使用/MDd的根本原因。

正确的b2命令配置

要编译出使用/MTd选项的Debug静态版Boost,必须额外指定runtime-link=static参数,完整参考命令如下(以VS2019 x64环境为例):

b2 install --toolset=msvc-14.2 link=static runtime-link=static variant=debug address-model=64 --prefix="D:\boost_1_72_0\install"

参数说明

  • --toolset=msvc-14.2:指定使用的MSVC编译器版本,VS2017对应msvc-14.1,VS2019对应msvc-14.2,VS2022对应msvc-14.3,需和项目其他组件使用的编译器版本保持一致
  • link=static:输出Boost静态库,不生成dll文件
  • runtime-link=static:核心参数,指定静态链接CRT,Debug模式下自动使用/MTd编译选项,Release模式下自动使用/MT编译选项
  • variant=debug:编译Debug版本,若要同时编译Release版本可写为variant=debug,release
  • address-model=64:编译64位版本,需要32位版本改为32即可
  • --prefix=:指定编译完成后的库文件、头文件安装路径

注意事项

  • 执行编译命令前,务必先删除Boost源码目录下的bin.v2缓存文件夹,否则b2会复用之前的编译缓存,哪怕参数修改正确也可能输出带/MDd选项的旧库文件
  • 编译完成后可做简单校验:取一个编译生成的Boost静态lib,通过VS开发人员命令提示符执行dumpbin /directives 你的lib路径 | findstr /i "msvcrt",如果输出内容里没有msvcrtd.dll相关的动态库引用,就说明/MTd配置生效了

内容的提问来源于stack exchange,提问作者Sid Maxwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:19:05