/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory #include_next <stdlib.h>
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory #include_next <stdlib.h>
我有使用 opengl 和 CGAL 的 c++ qt 项目,但我有以下 错误:
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
#include_next <stdlib.h>
我搜索了关于 -DENABLE_PRECOMPILED_HEADERS=OFF 的问题和大部分解决方案
我在 .pro 文件中使用它并没有解决问题。
.pro 文件:
QT += core gui opengl
QT += xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = try_gui
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
DENABLE_PRECOMPILED_HEADERS=OFF
SOURCES += \
main.cpp \
mainwindow.cpp \
my_polyhedron.cpp \
myqglwidget.cpp
HEADERS += \
mainwindow.h \
my_polyhedron.h \
myqglwidget.h \
My_Halfedge_base.h \
My_Face_base.h
FORMS += \
mainwindow.ui
LIBS += -L/lib64 -lgmp -lCGAL
INCLUDEPATH +=/usr/include
当我从 .pro 文件中删除 INCLUDEPATH +=/usr/include 时问题就解决了
但在到达 CGAL 时出现另一个错误:
/usr/include/boost/graph/detail/adjacency_list.hpp:1755:5: note: template argument deduction/substitution failed:
../try_gui/my_polyhedron.cpp:203:78: note: ‘Surface {aka CGAL::Polyhedron_3<CGAL::Simple_cartesian<double> >}’ is not derived from ‘const boost::adj_list_helper<Config, Base>’
.edge_index_map (boost::get(CGAL::edge_external_index ,surface))
^
../try_gui/my_polyhedron.cpp: In member function ‘void My_Polyhedron::drawTree(MyQGLWidget*, int)’:
../try_gui/my_polyhedron.cpp:329:27: error: ‘class CGAL::Kd_tree_node<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Fair<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Plane_separator<double> >, CGAL::Boolean_tag<true> >’ has no member named ‘size’
if(leaves[i]->size() < 1) continue;
^~~~
../try_gui/my_polyhedron.cpp:331:52: error: ‘class CGAL::Kd_tree_node<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Fair<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Plane_separator<double> >, CGAL::Boolean_tag<true> >’ has no member named ‘begin’
Tree::Point_d_iterator it = leaves[i]->begin();
n file included from /usr/include/CGAL/subdivision_method_3.h:31:0,
from ../try_gui/my_polyhedron.cpp:6:
/usr/include/CGAL/Subdivision_method_3/subdivision_methods_3.h: In instantiation of ‘void CGAL::Subdivision_method_3::Sqrt3_subdivision(PolygonMesh&, int) [with PolygonMesh = My_Polyhedron]’:
../try_gui/my_polyhedron.cpp:175:60: required from here
/usr/include/CGAL/Subdivision_method_3/subdivision_methods_3.h:236:16: error: no type named ‘type’ in ‘struct boost::property_map<My_Polyhedron, boost::vertex_point_t, void>’
Sqrt3(pmesh, Sqrt3_mask_3<PolygonMesh>(&pmesh, get(vertex_point,pmesh)), step);
有什么帮助吗?
删除最后一行
INCLUDEPATH +=/usr/include
在 .pro 文件中
如果这不起作用,请再次尝试 运行 qmake
我通过添加解决了问题
QMAKE_CFLAGS_ISYSTEM = -I
到 .pro 文件
我有使用 opengl 和 CGAL 的 c++ qt 项目,但我有以下 错误:
/usr/include/c++/7/cstdlib:75:15: fatal error: stdlib.h: No such file or directory
#include_next <stdlib.h>
我搜索了关于 -DENABLE_PRECOMPILED_HEADERS=OFF 的问题和大部分解决方案 我在 .pro 文件中使用它并没有解决问题。
.pro 文件:
QT += core gui opengl
QT += xml
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = try_gui
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
DENABLE_PRECOMPILED_HEADERS=OFF
SOURCES += \
main.cpp \
mainwindow.cpp \
my_polyhedron.cpp \
myqglwidget.cpp
HEADERS += \
mainwindow.h \
my_polyhedron.h \
myqglwidget.h \
My_Halfedge_base.h \
My_Face_base.h
FORMS += \
mainwindow.ui
LIBS += -L/lib64 -lgmp -lCGAL
INCLUDEPATH +=/usr/include
当我从 .pro 文件中删除 INCLUDEPATH +=/usr/include 时问题就解决了
但在到达 CGAL 时出现另一个错误:
/usr/include/boost/graph/detail/adjacency_list.hpp:1755:5: note: template argument deduction/substitution failed:
../try_gui/my_polyhedron.cpp:203:78: note: ‘Surface {aka CGAL::Polyhedron_3<CGAL::Simple_cartesian<double> >}’ is not derived from ‘const boost::adj_list_helper<Config, Base>’
.edge_index_map (boost::get(CGAL::edge_external_index ,surface))
^
../try_gui/my_polyhedron.cpp: In member function ‘void My_Polyhedron::drawTree(MyQGLWidget*, int)’:
../try_gui/my_polyhedron.cpp:329:27: error: ‘class CGAL::Kd_tree_node<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Fair<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Plane_separator<double> >, CGAL::Boolean_tag<true> >’ has no member named ‘size’
if(leaves[i]->size() < 1) continue;
^~~~
../try_gui/my_polyhedron.cpp:331:52: error: ‘class CGAL::Kd_tree_node<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Fair<CGAL::Search_traits_3<CGAL::Simple_cartesian<double> >, CGAL::Plane_separator<double> >, CGAL::Boolean_tag<true> >’ has no member named ‘begin’
Tree::Point_d_iterator it = leaves[i]->begin();
n file included from /usr/include/CGAL/subdivision_method_3.h:31:0,
from ../try_gui/my_polyhedron.cpp:6:
/usr/include/CGAL/Subdivision_method_3/subdivision_methods_3.h: In instantiation of ‘void CGAL::Subdivision_method_3::Sqrt3_subdivision(PolygonMesh&, int) [with PolygonMesh = My_Polyhedron]’:
../try_gui/my_polyhedron.cpp:175:60: required from here
/usr/include/CGAL/Subdivision_method_3/subdivision_methods_3.h:236:16: error: no type named ‘type’ in ‘struct boost::property_map<My_Polyhedron, boost::vertex_point_t, void>’
Sqrt3(pmesh, Sqrt3_mask_3<PolygonMesh>(&pmesh, get(vertex_point,pmesh)), step);
有什么帮助吗?
删除最后一行
INCLUDEPATH +=/usr/include
在 .pro 文件中
如果这不起作用,请再次尝试 运行 qmake
我通过添加解决了问题 QMAKE_CFLAGS_ISYSTEM = -I
到 .pro 文件