提升线程库版本不匹配

Boost thread library version mismatch

提问人:David Toomey 提问时间:4/14/2022 最后编辑:NimanthaDavid Toomey 更新时间:5/31/2022 访问量:156

问:

我使用 C++ 向量和 Winforms 创建了一个托管的 C++ 日志解析器应用程序。我想添加多线程,而 Boost 似乎是比 Winforms BackgroundWorker 更好的选择,因为我希望能够使用每个线程执行我现有的 C++ 函数。我按照多个不同的教程多次安装了 Boost(最后是这个:https://levelup.gitconnected.com/the-definite-guide-on-compiling-and-linking-boost-c-libraries-for-visual-studio-projects-c79464d7282d),当我尝试 #include < boost/thread.hpp 时仍然遇到同样的问题>

错误LNK1104无法打开文件“libboost_thread-vc143-mt-x64-1_78.lib”

我不知道为什么当我安装了 Boost 1_79 而不是 1_78 时它正在寻找这个库。我的 .lib 文件也有“mt-gd-x64”,而不仅仅是“mt-x64”。我已经在 Project->Properties->Linker->General->Additional Library Directoryies 中指定了库的正确文件路径。我还尝试通过 Visual Studio 2022 NuGet 包管理器安装 Boost。该文件夹中的 lib 文件也略微偏离。 “vc120”而不是“vc143”。我什至尝试更改 .lib 文件名以与链接器错误中的文件名完全匹配,但是当我这样做时,我收到更多错误LNK1104例如无法打开文件“libboost_chrono-vc143-mt-x64-1_78.lib”

我只需要删除所有 Boost 文件并下载版本 1_78 然后重试吗?为什么 Visual Studio 在编译时会查找错误的文件名?我的 #include 陈述错了吗?

多线程 WinForms 提升 链接器错误 托管 C++

评论


答:

0赞 David Toomey 4/14/2022 #1

我最终通过下载 boost 1_78、构建它并指定该文件夹或 1_79 文件夹来解决这个问题。如果有人可能知道为什么程序正在寻找 1_78 而不是 1_79,请随时回复 也非常感谢 George Gkasdrogkas,他编写了最适合我的教程,了解如何安装 Boost。教程链接在问题:)