当我尝试使用 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/