2

当我尝试使用 g++ 编译器在代码块上运行我的程序时,我遇到了这个非常奇怪的问题。我已经安装了 boost 并使用了它,直到大约一周前,我从来没有遇到任何问题。今天,我回到我正在做的一个项目,当我尝试运行它时突然收到以下错误消息

程序无法启动,因为您的计算机中缺少 libboost_thread-mgw47-mt-1_53.dll。尝试重新安装程序以解决此问题。

现在我以前在这个程序中使用过 boost 线程,所以我不知道为什么我会得到这个。同样奇怪的是,提升线程在我拥有的其他项目中工作。

我该如何解决这个问题?一切似乎都已就绪,路径变量集、编译器、链接器选项集等......自上次成功运行该程序以来,我所知道的一切都没有改变。我今天确实更新了 Visual Studio,但我认为这不会有任何影响。我不确定我还能提供哪些其他信息,因为我不知道为什么会这样。.dll 文件确实存在,我尝试将其移动到工作目录中,但仍然出现相同的错误。

有人对我如何解决这个问题有任何建议吗?

4

2 回答 2

1

您在该项目中的编译器正在动态链接 boost 线程库,

可能链接器选项中的一些错误配置设置或您的代码使用 dllimport 而不是在编译时解析的“正常”函数(dllimport 在运行时解析函数 - 它无法在所需的库中找到它们,因此您会收到错误)。

您的其他项目之所以有效,是因为它们静态链接了 boost 线程库(为静态链接/编译提供正确的 boost 预处理器定义,并包含线程库的相应 cpp/lib 文件),因此它包含在程序中。

于 2013-05-26T21:31:23.087 回答
0

所以我想通了。(再次注意,我使用的是代码块)

我在全局编译器和链接器设置中设置了所有内容(我认为这已经足够了)。我在各个项目的编译器设置中设置了所有内容,但是正在运行的项目在链接器设置中也有一些额外的东西。所以我设置了所有东西,除了项目 -> 构建选项 -> 搜索目录 -> 链接器部分中的设置,选择项目名称,而不是调试/发布。我添加了... $(#boost.lib) ....\boost_1_53_0\stage\lib 现在没问题了。

全局编译器设置不涵盖单个项目设置,这有点令人惊讶,但是你去吧。

于 2013-05-26T23:11:27.310 回答