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

VS2019调试版编译报错找不到libboost_date_time库,咨询Boost编译参数

问题描述

编译调试版项目时触发链接错误:

LINK : fatal error LNK1104: cannot open file "libboost_date_time-vc142-mt-gd-x64-1_72.lib"

但Release版本编译正常,且调试版与Release版本的项目设置完全一致。

查看Boost库文件夹,发现存在的对应文件是:

libboost_date_time-vc142-mt-sgd-x64-1_72.lib

即编译生成的库文件名比项目需要的多了一个s前缀。当前使用的Boost编译命令为:

b2.exe -j4 toolset=msvc-14.2 address-model=64 architecture=x86 link=static threading=multi runtime-link=static --build-type=complete --build-dir=build\x64 stage
问题原因

文件名里的s代表Boost库是静态链接C++运行时库编译的,而项目调试版默认寻找的gd后缀库是动态链接C++运行时库的调试版本。你当前的编译参数里指定了runtime-link=static,所以Boost只生成了静态运行时的库文件,缺少项目需要的动态运行时调试库。

解决方案

有两种可行的解决方式,选一种即可:

方式一:调整Boost编译参数,生成动态运行时的库

把编译命令里的runtime-link=static改成runtime-link=shared,或者直接删除这个参数(因为--build-type=complete会自动生成所有运行时链接类型的库)。修改后的命令示例:

b2.exe -j4 toolset=msvc-14.2 address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=complete --build-dir=build\x64 stage

重新编译后,就会生成不带s的gd后缀调试库,匹配项目的需求。

方式二:修改项目调试版的运行库设置

打开项目属性,依次进入C/C++ -> 代码生成 -> 运行库,将调试版的选项改为多线程调试(/MTd)。这样项目会自动寻找带sgd后缀的Boost库,和你已编译好的文件匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 02:37:23