QT中无法打开文件“libboost_filesystem-vc141-mt-gd-x64-1_73.lib”的解决办法

在使用Qt编译旧工程时遇到LINK:fatalerrorLNK1104错误,提示缺少特定版本的Boost库文件。通过安装对应的Visual Studio 2019编译工具解决了问题。

用Qt编译一个之前的工程时遇到问题 LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc141-mt-gd-x64-1_73.lib”。

查了下文件,电脑中没有,电脑中只有vc142的boost版本,所以大概估计是编译器的问题。在网上查了下,vc141对应的msvc2017,vc142对应的是msvc2019。很明显这个工程应该是用msvc2019来编译。网上查了解决方法,如果不想装vs2019的话,可以用“vs_buildtools__1710341145.1626435649.exe”直接装msvc2019编译器。

装完后重启电脑,再打开QT,问题解决。

<think> 我们需要根据库文件名中的标识符来区分debug和release版本。通常,在Boost库中,文件名中的标识符含义如下: - "gd":表示debug版本(带有调试信息) - "s":表示静态链接到运行时库(static runtime) - 没有"gd"且没有"s"的通常是release版本(动态链接到运行时库) 但是注意,有些文件名中可能同时包含"s"和"gd"(如"sgd"),这表示静态链接的debug版本。 根据常见的Boost库命名规则: - mt:表示多线程(multithreaded) - gd:表示debug版本(通常包含调试信息) - s:表示静态链接(static linking)到运行库 - 没有这些后缀的通常为动态链接的release版本 根据上述规则,我们可以将文件分为: debug版本:文件名中包含"gd"(无论是否有"s") release版本:文件名中不包含"gd"(但可能包含"s",因为release版本也有静态链接和动态链接之分) 注意:有些release版本可能是静态链接(带"s")或动态链接(不带"s")。我们这里只根据debug和release来分,所以只要不包含"gd"就认为是release。 因此,我们可以这样分类: 文件列表: libboost_chrono-vc143-mt-gd-x64-1_86.lib -> debug (因为包含"gd") libboost_chrono-vc143-mt-x64-1_86.lib -> release (不包含"gd") libboost_date_time-vc143-mt-gd-x64-1_86.lib -> debug libboost_date_time-vc143-mt-s-x64-1_86.lib -> release (不包含"gd",尽管有"s") libboost_date_time-vc143-mt-sgd-x64-1_86.lib -> debug (包含"gd") libboost_date_time-vc143-mt-x64-1_86.lib -> release libboost_serialization-vc143-mt-gd-x64-1_86.lib -> debug libboost_serialization-vc143-mt-x64-1_86.lib -> release libboost_thread-vc143-mt-gd-x64-1_86.lib -> debug libboost_thread-vc143-mt-x64-1_86.lib -> release 因此,我们创建两个文件夹:debug和release,然后将上述文件分别放入对应的文件夹。 具体分配如下: debug文件夹: libboost_chrono-vc143-mt-gd-x64-1_86.lib libboost_date_time-vc143-mt-gd-x64-1_86.lib libboost_date_time-vc143-mt-sgd-x64-1_86.lib libboost_serialization-vc143-mt-gd-x64-1_86.lib libboost_thread-vc143-mt-gd-x64-1_86.lib release文件夹: libboost_chrono-vc143-mt-x64-1_86.lib libboost_date_time-vc143-mt-s-x64-1_86.lib libboost_date_time-vc143-mt-x64-1_86.lib libboost_serialization-vc143-mt-x64-1_86.lib libboost_thread-vc143-mt-x64-1_86.lib 注意:文件`libboost_date_time-vc143-mt-s-x64-1_86.lib`虽然没有"gd",但是有"s",这表示它是静态链接的release版本,所以放入release文件夹。 另外,没有出现同时包含"s"但不包含"gd"的debug版本(即没有"sg"但不带"d"的,因为"sgd"中的"gd"才是debug标志),所以按照上述规则即可。 总结:只要文件名中包含"gd"(即debug版本)就放入debug文件夹,否则放入release文件夹。 </think>### Boost库文件分类指南 根据Boost库命名规范,可以通过文件名中的标识符区分Debug和Release版本: #### 📁 **Debug版本文件**(包含调试符号) 特征:文件名中包含 `-gd-` 或 `-sgd-` ``` libboost_chrono-vc143-mt-gd-x64-1_86.lib libboost_date_time-vc143-mt-gd-x64-1_86.lib libboost_date_time-vc143-mt-sgd-x64-1_86.lib libboost_serialization-vc143-mt-gd-x64-1_86.lib libboost_thread-vc143-mt-gd-x64-1_86.lib ``` #### 📦 **Release版本文件**(优化后版本) 特征:文件名中包含 `-mt-` 但不含 `-gd-` 或 `-sgd-` ``` libboost_chrono-vc143-mt-x64-1_86.lib libboost_date_time-vc143-mt-s-x64-1_86.lib libboost_date_time-vc143-mt-x64-1_86.lib libboost_serialization-vc143-mt-x64-1_86.lib libboost_thread-vc143-mt-x64-1_86.lib ``` #### 文件夹结构建议 ``` Boost_Libraries/ ├── Debug/ # 存放所有带gd/sgd标识的文件 │ ├── libboost_chrono-vc143-mt-gd-x64-1_86.lib │ ├── libboost_date_time-vc143-mt-gd-x64-1_86.lib │ └── ... └── Release/ # 存放所有不带gd标识的文件 ├── libboost_chrono-vc143-mt-x64-1_86.lib ├── libboost_date_time-vc143-mt-s-x64-1_86.lib └── ... ``` #### 🔍 命名规则解析 | 标识符 | 含义 | 版本类型 | |--------|-----------------------|----------| | `gd` | 调试版本(带调试符号)| Debug | | `sgd` | 静态链接调试版本 | Debug | | `s` | 静态链接 | Release | | 无特殊 | 动态链接 | Release |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值