1

我在 CMake 生成的 .vcproj 中收到此错误:

Performing Pre-Link Event...
Linking...
LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc90-mt-1_44.lib'

除了调用该库这一事实之外boost_thread-vc90-mt-1_44.lib,我在 .vcproj 中根本找不到对此的任何引用。在链接器/输入部分、生成的命令行中,甚至在文本编辑器中搜索 .vcproj 文件。

可能发生了什么,我怎样才能更好地调查问题?有没有办法让链接器告诉我它首先在哪里找到引用libboost_thread-vc90-mt-1_44.lib

4

2 回答 2

3

Boost 使用与 Visual Studio 的自动链接,因此您不必在任何 boost 库中显式链接。您可以定义BOOST_ALL_NO_LIB禁用此功能,但我不建议这样做,根据我的经验,它非常有效。

您可以#pragma comment(lib, "user32.lib")在 Visual Studio 中使用自动链接库。如果你看一下 boost/config/auto_link.hpp 你会看到它被使用了。

在您的情况下,它正在寻找 boost 线程的静态版本,并且可能是您在构建 boost 时没有构建该版本。通过--build-type=completeb2选项中指定,您可以确保构建了 boost 库的静态和动态版本。在这种情况下,您不必担心哪个版本是自动链接的。

于 2013-03-12T19:39:08.730 回答
0

boost_thread-vc90-mt-1_44.lib是一个导入boost_thread-vc90-mt-1_44.dll。但是,您似乎静态链接 CRT,因此 boost 自动链接功能也尝试链接静态 Boost 库,它会寻找名为libboost_thread-vc90-mt-1_44.lib.

有关更多详细信息,请参阅此问题

于 2013-03-12T20:00:05.433 回答