我正在开发VS 2010中的DLL项目,我想在代码的某些部分使用boost mutex。但是当我编译项目以发布最终的DLL时,我得到了这个链接错误:
LINK : fatal error LNK1104: cannot open file 'libboost_date_time-vc100-mt-1_49.lib'
我已经用这个命令编译了boost:
bjam install --toolset=msvc variant=release link=static threading=multi runtime-link=static
&安培;我有一个名为libboost_date_time-vc100-mt-s-1_49.lib
的文件,当我将项目的配置类型从动态链接库(DLL)更改为静态库时,项目构建成功,但我只需要作为DLL文件发布(& my最终DLL不能与其他外部DLL有任何依赖关系)。我知道问题是由编译boost引起的,但我不知道应该如何重新编译它
任何指南?
答案 0 :(得分:3)
检查您是否静态链接运行时库(配置属性 - > C / C ++ - >代码生成 - >运行时库:多线程(/ MT)。
否则,动态链接CRT和提升。为此目的,构建提升如下:
bjam --toolset=msvc variant=release link=shared threading=multi runtime-link=shared
答案 1 :(得分:1)
IMO,你很好地构建了boost库:你使用了link=static
这意味着你想要发出静态库(而不是DLL),并且因为你想要进行独立部署,你指定了{{1意思是你链接到MS C / C ++运行时作为静态库(例如,printf()的代码将嵌入到你的最终库中,而不是被引用到msvcr100.dll)
请查看下面的图片,确保在附加库依赖
下设置boost库所在目录的完整路径
答案 2 :(得分:0)
我在DLL项目中修复了错误“错误LNK1104无法打开文件'libboost_locale-vc142-mt-gd-x32-1_73.lib'”,我在this issue上通过安装使用vcpkg增强库。
安装vcpkg。然后写.\vcpkg install boost
。您可以在视频https://youtu.be/b7SdgK7Y510中看到它的完成情况。他没有安装boost库,但是过程完全一样。
这当然是Windows和Visual Studio工具集的全部。