3

我正在 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 的任何依赖)。我知道问题是由 boost 的编译引起的,但我不知道我应该如何重新编译它有什么
指导方针吗?

4

3 回答 3

3

检查您是否静态链接运行时库(配置属性-->C/C++-->代码生成-->运行时库:多线程 (/MT)。

否则,链接 CRT 并动态提升。为此,像这样构建提升:

bjam --toolset=msvc variant=release link=shared threading=multi runtime-link=shared
于 2013-03-12T13:38:51.720 回答
1

IMO,您构建了 boost 库就好了:您使用link=static了这意味着您想要发出静态库(而不是 DLL),并且由于您想要独立部署,您指定的runtime-link=static意思是您链接到 MS C/C++ 运行时间为静态库(例如 printf() 的代码将嵌入到您的最终库中,不会被 msvcr100.dll 引用)

请看下图,确保在Additional Library Dependencies下设置你的 boost 库所在目录的完整路径

在此处输入图像描述

于 2013-03-12T11:20:30.240 回答
0

我在一个 DLL 项目中修复了我的错误“错误 LNK1104 无法打开文件 'libboost_locale-vc142-mt-gd-x32-1_73.lib'”,我通过使用 vcpkg 安装 boost 库在 boost' github 上的这个问题中进行了描述。

安装 vcpkg。然后写.\vcpkg install boost。您可以在视频中看到它是如何完成的:https ://youtu.be/b7SdgK7Y510 。他没有安装 boost 库,但过程完全相同。

当然,这一切都适用于 Windows 和 Visual Studio 的工具集。

于 2020-06-23T09:38:30.173 回答