您的计算机缺少 C++ boost 线程

标签 c++ gcc boost-thread

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

The program can't start because libboost_thread-mgw47-mt-1_53.dll is missing from your computer. Try reinstalling the program to fix this problem.

现在我之前在这个程序中使用过 boost thread,所以我不知道为什么我会得到这个。同样奇怪的是,boost 线程在我的其他项目中也能正常工作。

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

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

最佳答案

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

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

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

关于您的计算机缺少 C++ boost 线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16760235/

相关文章:

c++ - 执行while循环后程序崩溃

c++ - 阻止背景移动

c++ - 结构操作,代码不起作用?

使用 gcc 和终端编译

gcc - 将 math.h 与 gprbuild 链接起来

c++ - Boost.Thread 没有加速?

c++ - 如何使用boost使类成员函数成为线程函数

C++ 比较 vector 迭代器与实例

c - 在 STM32 中从 RAM 执行代码

c++ - Boost::mutex - 是否可以将它锁定在一个类函数中并在另一个类函数中解锁?