LINK : fatal error LNK1104: cannot open file ‘libboost_system-vc90-mt-1_55.lib‘

事前:

编译boost_1_55_0源代码,打开CMD,进入到boost_1_55_0根目录,执行bootstrap.bat后,按提示再执行.\b2完成编译完成。

在其他工程序中设置引用这个目录。编译提示cannot open file 'libboost_system-vc90-mt-1_55.lib'

原因:

  机器上默认使用vs2013编译的,得到的是libboost_system-vc120-mt-1_55.lib。

重新编译:

  将原来VS2013编译的库目录 boost_1_55_0\bin.v2\libs 重命名为 boost_1_55_0\bin.v2\libs_vs2013以作将来备用。

CMD打开boost_1_55_0目录,执行【bjam --toolset=msvc-9.0 --build-type=complete stage】即可。

<think> 我们之前讨论了如何将Boost文件按照Debug和Release版本分类存放,现在用户遇到了链接错误:无法打开文件libboost_serialization-vc143-mt-x64-1_86.lib” 这个文件是Release版本的库文件(根据之前的命名规则,它没有包含`-gd-`或`-sgd-`等调试标识)。 错误原因可能是链接器在尝试链接时找不到这个文件。 可能的原因: 1. 文件路径未正确配置:虽然用户已经将文件分类存放,但是在项目配置中可能没有正确指定库文件的路径。 2. 项目配置问题:用户可能在Debug配置下错误地链接了Release版本的库,或者在Release配置下链接器路径没有包含Release文件夹。 3. 文件缺失:该文件可能没有被正确放置到Release文件夹中,或者文件本身不存在。 解决方案: 1. 检查文件是否存在:首先确认文件libboost_serialization-vc143-mt-x64-1_86.lib”是否确实存在于用户设置的Release文件夹中。 2. 检查Visual Studio项目配置: - 在Release配置下,确保库文件目录(Library Directories)包含了存放Release版本库的文件夹(例如Boost_Libraries/Release)。 - 在Debug配置下,应该使用Debug文件夹(例如Boost_Libraries/Debug)中的库。 3. 检查链接器输入:在项目属性 -> 链接器 -> 输入 -> 附加依赖项,确保在Release配置下添加的是Release库,在Debug配置下添加的是Debug库。也可以使用宏来区分,例如: Debug配置:添加带gd的库(如libboost_serialization-vc143-mt-gd-x64-1_86.lib) Release配置:添加不带gd的库(如libboost_serialization-vc143-mt-x64-1_86.lib) 4. 检查文件是否被误移动:如果之前分类时移动了文件,可能这个文件被放错了位置。可以搜索整个目录确认。 注意:在Windows环境下,路径和文件名是大小写不敏感的,但是需要确保路径中没有空格或特殊字符导致问题。 如果用户确认文件存在,那么问题很可能出在项目设置上。需要检查当前活动配置(Debug/Release)是否与链接的库类型匹配。 具体步骤(以Visual Studio为例): 1. 打开项目属性(右键项目 -> 属性) 2. 在左上角配置(Configuration)下拉框中选择当前活动的配置(Debug或Release) 3. 在配置属性 -> VC++目录 -> 库目录(Library Directories)中,添加对应的Boost库路径(Debug配置添加Debug文件夹路径,Release配置添加Release文件夹路径) 4. 在配置属性 -> 链接器 -> 输入 -> 附加依赖项(Additional Dependencies)中,确保引用的库文件名正确(注意区分Debug和Release版本) 另外,也可以使用属性表(Property Sheet)来管理这些设置,以便在多个项目中重用。 如果用户有多个平台(如x86和x64),还需要注意平台的选择。 考虑到用户使用的是x64平台(从文件名中的x64可以看出),请确保项目配置的平台是x64。 如果以上步骤都检查无误,那么可能是环境变量或系统路径问题,但这种情况较少见。 根据以上分析,我们给出解决方案,并在最后提出相关问题。 </think> ### 错误原因分析及解决方法 #### 🚫 错误原因 `LNK1104` 错误表示链接器无法找到指定的库文件 `libboost_serialization-vc143-mt-x64-1_86.lib`,主要原因包括: 1. **路径配置错误**(最常见): - Visual Studio 项目中未正确设置库文件路径 - 环境变量 `LIB` 未包含库文件所在目录 2. **文件实际缺失**: -文件未被下载/安装到本地 - 文件被错误移动到其他位置或被删除 3. **版本不匹配**: - VS 项目设置的平台工具集(如 v143)与库文件版本不一致 - 项目架构(x64/x86)与库文件架构不匹配 #### ✅ 解决方案 1. **验证文件是否存在**: ```powershell # 在项目目录执行搜索 dir /s "libboost_serialization-vc143-mt-x64-1_86.lib" ``` 2. **配置 VS 项目属性**: - 右键项目 → 属性 → VC++ 目录: - 添加库路径到 **库目录** ``` $(SolutionDir)Boost_Libraries\Release ``` - 链接器 → 输入 → 附加依赖项: - 添加库文件名: ``` libboost_serialization-vc143-mt-x64-1_86.lib ``` 3. **检查平台工具集匹配**: - 项目属性 → 常规 → 平台工具集: - 确保选择 **Visual Studio 2022 (v143)** 4. **环境变量检查**(全局配置): ```powershell # 查看当前LIB设置 set LIB # 添加Boost库路径(示例) setx LIB "%LIB%;C:\Boost_Libraries\Release" /M ``` 5. **Boost 版本确认**: - 检查安装的 Boost 版本是否为 1.86 - 重新下载/安装缺失库文件: ```powershell .\b2 install --with-serialization variant=release link=static runtime-link=static ``` #### 配置示意图 ```mermaid graph TD A[项目属性] --> B[VC++ 目录] A --> C[链接器 > 输入] B --> D[添加库目录路径] C --> E[添加具体lib文件名] D --> F[$(SolutionDir)Boost_Libraries\Release] E --> G[libboost_serialization*.lib] ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值