【发布时间】: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
编译时,错误消失了。
感谢您的帮助。 盖蒂恩
【问题讨论】:
-
你建立了 boost 吗?尽管 boost 只包含标头库,但它也包含需要编译的库。
-
这应该会有所帮助:https://stackoverflow.com/questions/20265879/how-do-i-build-boost-1-55-with-mingw 请注意构建当前版本而不是多年前的 1.55。
标签: c++ boost qt-creator