将Boost链接至C++项目时遇报错问题求助
解决Boost 1.59.0与CGAL集成时在Qt Creator/VS中的报错问题
Hey,我来帮你理理这个问题——我之前也踩过类似的Boost+CGAL配置坑,咱们一步步排查解决:
一、先修正Qt Creator .pro文件的低级错误
你的.pro配置里的路径写法有问题,这大概率是第一个报错源:
你写的路径末尾带了反斜杠
\,Qt会把它当成转义字符,导致路径解析错误;另外Windows路径的反斜杠要么改成正斜杠/,要么写成双反斜杠\\。
修正后的.pro示例应该是这样的(注释帮你标清楚了):
# Boost 头文件路径(如果用到需要编译的Boost库,后面还要加库路径) INCLUDEPATH += C:/local/boost_1_59_0 # CGAL 相关路径 INCLUDEPATH += C:/dev/CGAL-4.9/include INCLUDEPATH += C:/dev/CGAL-4.9/auxiliary/gmp/include # 链接库配置:用-L指定库目录,-l指定库名(自动匹配lib前缀和.lib后缀) LIBS += -LC:/dev/CGAL-4.9/auxiliary/gmp/lib -lgmp-10 # 如果Boost用到了需要编译的库(比如thread、system),加上下面这行 LIBS += -LC:/local/boost_1_59_0/stage/lib
二、检查Boost是否编译了必要的库
Boost 1.59.0不是全头文件库,像boost::thread、boost::system这些组件必须编译才能用,而CGAL大概率会用到它们。给你个快速编译步骤:
- 打开管理员命令提示符,进入Boost目录:
cd C:\local\boost_1_59_0 - 运行
bootstrap.bat生成编译工具b2 - 根据你的VS版本运行编译命令,比如VS2015(msvc-14.0)就执行:
(VS2013是msvc-12.0,自己对应调整)b2 toolset=msvc-14.0 --build-type=complete stage - 编译完成后,
C:\local\boost_1_59_0\stage\lib里会生成所有版本的库文件,后续链接时用这个路径就行。
三、Visual Studio项目的配置要点
如果是VS里报错,配置逻辑和Qt类似,但要注意Debug/Release版本对应:
- C/C++ → 常规 → 附加包含目录:添加Boost、CGAL、gmp的头文件路径
- 链接器 → 常规 → 附加库目录:添加Boost的
stage/lib和gmp的lib目录 - 链接器 → 输入 → 附加依赖项:添加
libgmp-10.lib,以及对应版本的Boost库(比如Debug模式用libboost_system-vc140-mt-gd-1_59.lib,Release用libboost_system-vc140-mt-1_59.lib)
四、常见报错的快速排查
- 找不到boost/xxx.hpp:检查INCLUDEPATH的路径拼写,有没有漏写或者多写斜杠,Windows下虽然大小写不敏感,但Qt有时候会认死理,尽量和实际路径一致
- 未定义的引用/链接错误:确认Boost是否编译了对应的库,库路径是否添加正确,Debug/Release版本要完全匹配(比如Debug项目不能用Release版的Boost库)
- CGAL相关报错:CGAL4.9和Boost1.59是兼容的,所以大概率是gmp或者Boost的链接问题,检查gmp库是否正确放置,有没有遗漏依赖
内容的提问来源于stack exchange,提问作者n.m
相关产品推荐
相关产品推荐

