【问题标题】:Boost with Qt Creator使用 Qt Creator 提升
【发布时间】:2020-10-03 03:51:18
【问题描述】:

我试图在使用 QtCreator 制作的 C++ 项目中使用 boost/filesystem。 问题是在构建时,出现以下错误:

"error: undefined reference to `boost::system::generic_category()'"

为了使用 boost,我执行了以下操作:

  • 下载boost库boost_1_73_0.7z文件
  • 解压到我的电脑(D:\Development\Boost下)
  • 在 .pro 文件中,我添加了以下选项

    INCLUDEPATH += D:/Development/Boost

  • 在我的 .cpp 文件中,我添加了以下包含

    #include "boost/filesystem.hpp"

  • 此时,在编译的时候,Qt creator IDE出现如下错误

    “错误:对 `boost::system::generic_category()' 的未定义引用”

根本原因如下:需要构建文件系统。因此,我通过以下方式构建了这个 boost 库:

  • 将 gcc 和 g++ 添加到路径变量(这是成功的,因为我可以从命令提示符调用“g++”和“gcc”)。
  • 打开 Qt 命令提示符(我使用的是 Qt 5.15.0 (MinGW 73.0 64-bit))并导航到安装了 boost 的存储库。

  • 在目录(D:\Development\Boost)的命令提示符下执行以下命令:bootstrap gcc

  • 在我解压 Boost 的目录中的命令提示符下执行以下命令:b2 toolset=gcc link=shared threading=multi --build-type=complete stage。此操作创建了一个包含所有 dll 的目录 D:\develoment\Boost\Stage\lib,包括“libboost_filesystem-mgw8-mt-d-x64-1_73.dll”。

  • 现在是时候在 Qt creator 中链接库了。因此,我在 .pro 文件中添加了以下内容:

    LIBS += -LD:/Development/Boost/stage/lib libboost_filesystem-mgw8-mt-d-x64-1_73

编译时,错误消失了。

感谢您的帮助。 盖蒂恩

【问题讨论】:

标签: c++ boost qt-creator


【解决方案1】:

正如@drescherjm 所说,您需要构建boost 库。
它们D:/Development/Boost/libs 目录中。

您似乎在使用 Windows,并且在“D:”驱动器上安装了 boost
我假设您使用的是 Qt Creator 附带的 MinGw 编译器,而不是 Visual Studio。

要使用MinGw 构建boost,首先打开相关的Qt 命令提示符,例如Qt 5.12.3 (MinGW 7.3.0 64-bit) 并输入以下内容:

D:
cd \Development\Boost
bootstrap.bat gcc
b2 toolset=gcc link=shared threading=multi --build-type=complete stage

这将在您的目录中构建 MinGw boost 库:D:\Development\Boost\stage\lib
然后将链接命令改为:

LIBS += -LD:/Development/Boost/stage/lib -l boost_system-mgw73-mt-x64-d-1_66

注意:boost_system 库的确切名称取决于 boost 在您的版本中如何命名。
请参阅Boost Getting Started on Windows: library naming. 此处的答案:mingw-w64 cannot find -lboost_filesystem 以及您在D:\Development\Boost\stage\lib 目录中构建的文件名。

【讨论】:

  • 当我发布我的答案时,您更新了您的问题,真是太棒了!你只建了boost-filesystem,还需要建boost-system
  • 到目前为止我的步骤还好吗?与此同时,我已经撤消了所有操作并完全按照您的步骤操作。我会看看它带来了什么。我不介意执行 undo-do-undo-do 循环,直到它起作用:-D
  • 它不起作用。在 Qt creator 中,我得到:“错误:找不到 -lboost_system-mgw73-mt-x64-d-1_73”
  • 是的,到目前为止您的步骤还可以,并且,不,不要撤消所有操作,只需构建boost-system: b2 toolset=gcc 系统,然后尝试链接您的程序。
  • 我已经构建了 'system' 并添加了 ''LIBS += -LD:/Development/Boost/stage/lib -l boost_system-mgw73-mt-x64-d-1_73"。现在出现错误是“错误:找不到 -lboost_system-mgw73-mt-x64-d-1_73”。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2011-04-18
  • 2017-01-21
  • 2011-09-25
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
  • 2018-07-27
  • 2012-02-27
相关资源
最近更新 更多