使用 Qt Creator 提升
Boost with Qt Creator
我试图在我用 QtCreator 制作的 C++ 项目中使用 boost/filesystem。
问题是在构建时出现以下错误:
"error: undefined reference to `boost::system::generic_category()'"
为了使用 boost,我执行了以下操作:
- 下载boost库boost_1_73_0.7z文件
- 解压到我的电脑(D:\Development\Boost下)
在.pro文件中,我添加了以下选项
包含路径 += D:/Development/Boost
在我的 .cpp 文件中,我添加了以下内容
#include "boost/filesystem.hpp"
此时我在编译的时候在Qt creator中出现如下错误IDE
"error: undefined reference to `boost::system::generic_category()'"
根本原因如下:需要构建文件系统。因此,我通过以下方式构建了这个提升库:
- 将 gcc 和 g++ 添加到路径变量(这是成功的,因为我可以从命令提示符调用 'g++' 和 'gcc')。
- 打开 Qt 命令提示符(我使用 Qt 5.15.0(MinGW 73.0 64 位))并导航到安装了 boost 的存储库。
- 在目录(D:\Development\Boost)的命令提示符中执行以下命令:bootstrap gcc
在我解压缩 Boost 的目录中的命令提示符中执行以下命令:b2 toolset=gcc link=shared threading=multi --build-类型=完成阶段。此操作已创建目录 D:\develoment\Boost\Stage\lib,其中包含所有 dll,包括 'libboost_filesystem-mgw8-mt-d-x64-1_73.dll'.
现在是 link Qt creator 中的库的时候了。因此,我在我的 .pro 文件中添加了以下内容:
LIBS += -LD:/Development/Boost/stage/lib libboost_filesystem-mgw8-mt-d-x64-1_73
编译时,错误消失了。
感谢您的帮助。
加天
正如@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
。
然后将link命令改为:
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. the answer here: 和您在 D:\Development\Boost\stage\lib
目录中构建的文件名。
我试图在我用 QtCreator 制作的 C++ 项目中使用 boost/filesystem。 问题是在构建时出现以下错误:
"error: undefined reference to `boost::system::generic_category()'"
为了使用 boost,我执行了以下操作:
- 下载boost库boost_1_73_0.7z文件
- 解压到我的电脑(D:\Development\Boost下)
在.pro文件中,我添加了以下选项
包含路径 += D:/Development/Boost
在我的 .cpp 文件中,我添加了以下内容
#include "boost/filesystem.hpp"
此时我在编译的时候在Qt creator中出现如下错误IDE
"error: undefined reference to `boost::system::generic_category()'"
根本原因如下:需要构建文件系统。因此,我通过以下方式构建了这个提升库:
- 将 gcc 和 g++ 添加到路径变量(这是成功的,因为我可以从命令提示符调用 'g++' 和 'gcc')。
- 打开 Qt 命令提示符(我使用 Qt 5.15.0(MinGW 73.0 64 位))并导航到安装了 boost 的存储库。
- 在目录(D:\Development\Boost)的命令提示符中执行以下命令:bootstrap gcc
在我解压缩 Boost 的目录中的命令提示符中执行以下命令:b2 toolset=gcc link=shared threading=multi --build-类型=完成阶段。此操作已创建目录 D:\develoment\Boost\Stage\lib,其中包含所有 dll,包括 'libboost_filesystem-mgw8-mt-d-x64-1_73.dll'.
现在是 link Qt creator 中的库的时候了。因此,我在我的 .pro 文件中添加了以下内容:
LIBS += -LD:/Development/Boost/stage/lib libboost_filesystem-mgw8-mt-d-x64-1_73
编译时,错误消失了。
感谢您的帮助。 加天
正如@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
。
然后将link命令改为:
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. the answer here: D:\Development\Boost\stage\lib
目录中构建的文件名。