在Ubuntu上对OpenGL的引用未定义。
在Ubuntu上对OpenGL的引用未定义。
我得到了所有这些未定义的引用:\n
链接CXX可执行文件SimpleGavam ../../lib/local/Gavam/libGavam.a(MeshUtils.cpp.o):在函数“Gavam :: DrawMesh(cv :: Mat_&,cv :: Mat_ const&,cv :: Mat_ const&,cv :: Vec const&,double,double,double,double,cv :: Size_ const&,double,double)”中: /home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:189:对“glutSwapBuffers”的未定义引用 ../../lib/local/Gavam/libGavam.a(MeshUtils.cpp.o):在函数“Gavam :: InitialiseOpenGLDrawingWindow(int,int,double,double,double)”中: /home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:578:对“glutInit”的未定义引用 /home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:580:对“glutInitDisplayMode”的未定义引用 /home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:582:对“glutInitWindowSize”的未定义引用 /home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:584:对“glutCreateWindow”的未定义引用 /home/samuel/Clm-Z/lib/local/Gavam/src/MeshUtils.cpp:585:对“glutHideWindow”的未定义引用 collect2: 错误:ld 返回 1 退出状态 make[2]: *** [exe/SimpleGavam/SimpleGavam] 错误 1 make[1]: *** [exe/SimpleGavam/CMakeFiles/SimpleGavam.dir/all] 错误 2
\n我正在使用cmake编译我的项目,并在CMakeLists中添加了glut标志。\n
SET(CMAKE_CXX_FLAGS“$ {CMAKE_CXX_FLAGS} - g -std = c ++ 11 -lGL -lglut -lGLU”) SET(CMAKE_EXE_LINKER_FLAGS“$ {CMAKE_EXE_LINKER_FLAGS} - g -std = c ++ 11 -lGL -lglut -lGLU”)
\n我在文件中包含了这些内容:\n
#include#include #include // OPEN GL #include #include
\n我做错了什么?
在Ubuntu上出现“Undefined references to OpenGL”错误的原因是缺少对OpenGL的引用。为了解决这个问题,可以使用CMake标准模块“FindOpenGL”来代替链接器标志。
解决方法如下:
1. 添加以下代码到CMakeLists.txt文件中:
find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
include_directories(library ${OPENGL_INCLUDE_DIRS} ${GLUT_INCLUDE_DIRS})
2. 另外,还需要添加以下代码到CMakeLists.txt文件中的target_link_libraries(target_name ${OPENGL_LIBRARIES} ${GLUT_LIBRARIES})部分。
通过以上步骤,应该能够解决在Ubuntu上出现“Undefined references to OpenGL”错误的问题。