在Ubuntu上对OpenGL的引用未定义。

6 浏览
0 Comments

在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我做错了什么?

0
0 Comments

在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”错误的问题。

0