我试图在使用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 中遇到了以下错误:
"error: undefined reference to `boost::system::generic_category()'"
根本原因是:需要构建FileSystem。因此,我通过以下方法构建了这个 boost 库:
- 将 gcc 和 g++ 添加到 path 变量中(成功后,我可以在命令提示符中使用 '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。这个操作创建了一个目录 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
编译时,错误消失了。
感谢您的帮助。 Gatien