未定义的符号glTexImage2D的引用

时间:2015-03-23 03:51:16

标签: c++ linux opengl

我试图让OpenGL工作,并且像这里有完全相同的问题: c++ OpenGL undefined references

我已经下载了两个软件包并使用了相同的教程。除了我使用Ubuntu 14.04.2 LTS,我的问题没有通过上述解决方案解决。

它将问题减少到一个未定义的引用,但仍然不起作用:

g++ -Wall -lGL -o cube main.cpp imageloader.cpp -lglut -lGLU 
...
/usr/bin/ld: /tmp/ccWzhHjf.o: undefined reference to symbol 'glTexImage2D'
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: error adding symbols: DSO missing from
command line collect2: error: ld returned 1 exit status make: *** [cube] Error 1

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

编辑Make File并将其更改为

  CC = g++
CFLAGS = -Wall -lGL
PROG = cube

SRCS = main.cpp imageloader.cpp

ifeq ($(shell uname),Darwin)
    LIBS = -framework OpenGL -framework GLUT
else
    LIBS = -lglut -lGLU
endif

all: $(PROG)

$(PROG):    $(SRCS)
    $(CC) $(CFLAGS) -o $(PROG) $(SRCS) $(LIBS)

clean:
    rm -f $(PROG)

我做的是将-lGL添加到CFLAGS并将-lGLU添加到LIBS中,以便它可以链接到所需的库

答案 1 :(得分:1)

/usr/bin/ld: /tmp/ccWzhHjf.o: undefined reference to symbol 'glTexImage2D'
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1: error adding symbols: DSO missing 

部分libGL.so.1基本上告诉您共享库有问题(缺少)。所以你需要做的就是像这样添加GL库:-lGL。即使您已经拥有-lGL它也无法工作的原因是您需要在.cpp文件之后移动库标志。所以这应该有效:

 g++ -Wall -o cube main.cpp imageloader.cpp -lGL -lglut -lGLU  

如果您有类似的错误,请尝试添加标记。