为什么我在这段代码中得到一个未定义的引用?

时间:2014-05-21 18:49:26

标签: c++ opengl linker undefined-reference glew

我正在使用Windows而我正在调用函数glGenBuffers。当我使用它时,我收到以下错误:

error: undefined reference to _imp____glewBufferData

我正在链接glew32文件夹中的MinGW/lib dll,glew.h内有MinGW/include。我还将glew32.dll放在WINDOWS/system32文件夹中。

我正在编译:

mingw32-g++.exe ... -lglfw -lglfw3 -lopengl32 -lglew32 -lgdi32 -lglu32 -lglew32s

是导致问题的库的顺序吗?如果是这样,应该在另一个之前发生什么?

1 个答案:

答案 0 :(得分:3)

MinGW不喜欢Windows附带glew的二进制动态库,它只能用于Visual C ++,除非你做了很多不必要的复杂事情。

更简单的解决方案是从构建命令行中删除-lglew32,保留-lglew32s(静态库)并添加-DGLEW_STATIC。最后一部分非常重要,因为当#include "glew.h"时,glew默认采用动态链接。必须首先定义GLEW_STATIC,以便链接器在Windows上正确解析静态符号。