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

Why am I getting an undefined reference in this code?

本文关键字:一个 未定义 引用 段代码 为什么 代码      更新时间:2023-10-16

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

error: undefined reference to _imp____glewBufferData

我正在链接我的MinGW/lib文件夹中的glew32 dll,并且我在MinGW/include中有glew.h。我也把glew32.dll放在WINDOWS/system32文件夹中。

我是这样编译的:

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

是库的顺序导致了问题吗?如果是这样,哪个应该排在另一个前面?

MinGW不像Windows的glow附带的二进制动态库,它只能在Visual c++中工作,除非你对它做了很多不必要的复杂的事情。

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