对 glew 的未定义引用 [重复]

Posted

技术标签:

【中文标题】对 glew 的未定义引用 [重复]【英文标题】:Undefined reference to glew [duplicate] 【发布时间】:2017-01-17 10:21:55 【问题描述】:

当我在我的 opengl 项目中使用 ftgl 渲染字体时,我遇到了错误说明

g++ -o mygame Sample_GL3_2D.cpp glad.c -lGL -lglfw -ldl -lftgl  -lSOIL -I /usr/include/freetype2 -L/usr/local/lib -lfreetype
/usr/local/lib/libftgl.so: undefined reference to `__glewGenBuffers'
/usr/local/lib/libftgl.so: undefined reference to `glewInit'
/usr/local/lib/libftgl.so: undefined reference to `__glewBindVertexArray'
/usr/local/lib/libftgl.so: undefined reference to `__glewBindBuffer'
/usr/local/lib/libftgl.so: undefined reference to `__glewUniform3f'
/usr/local/lib/libftgl.so: undefined reference to `__glewVertexAttribPointer'
/usr/local/lib/libftgl.so: undefined reference to `__glewBufferData'
/usr/local/lib/libftgl.so: undefined reference to `__glewDeleteBuffers'
/usr/local/lib/libftgl.so: undefined reference to `__glewDeleteVertexArrays'
/usr/local/lib/libftgl.so: undefined reference to `__glewGenVertexArrays'
/usr/local/lib/libftgl.so: undefined reference to `__glewEnableVertexAttribArray'

这些是我在 Makefile 中的内容

all:mygame

mygame: Sample_GL3_2D.cpp glad.c
    g++ -o mygame Sample_GL3_2D.cpp glad.c -lGL -lglfw -ldl -lftgl  -lSOIL -I /usr/include/freetype2 -L/usr/local/lib -lfreetype
clean:
    rm mygame

看起来错误是由 libftgl.so 库引发的。我已经使用 ubuntu 中的 glew 包安装了 GLEW。但不明白为什么它没有被引用。

【问题讨论】:

你没有链接到 glew,不是吗? 【参考方案1】:

您没有在编译/链接行引用 GLEW 库。 g++ 的 -l 标志告诉它告诉链接器链接库,例如-lftgl 告诉它寻找 ftgllibrary 并链接它。

您没有 -lGLEW(如果库使用小写命名,则没有 -lglew),因此它没有被链接。另请参阅此答案 error undefined reference to `FTExtrudeFont::FTExtrudeFont(char const*)'

也许你们两个应该聚在一起尝试互相帮助,因为你们似乎正在尝试解决相同的(家庭作业?)问题。

【讨论】:

以上是关于对 glew 的未定义引用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Qt 项目中对 glew 方法的未定义引用

对结构方法的未定义引用[重复]

对带有数组的构造函数的未定义引用[重复]

使用类标头对函数的未定义引用[重复]

使用 QT 时对构造函数的未定义引用 [重复]

C ++错误:对“”的未定义引用,并且ld返回了1个退出状态[重复]