对`__glewCreateShader`的未定义引用[重复]

Posted

技术标签:

【中文标题】对`__glewCreateShader`的未定义引用[重复]【英文标题】:undefined reference to `__glewCreateShader` [duplicate] 【发布时间】:2016-06-02 04:52:40 【问题描述】:
#ifdef _WIN32
#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/glu.h>
#else
...
#endif
#include <SDL2/SDL.h>
#include <box2d/box2d.h>

在我开始使用glCreateShader, glShaderSource, glCompileShader, glAttachShader, glLinkProgram 之前,所有东西,比如glewInit, glDrawArrays...,都运行良好现在,编译器向我显示了这些错误:

>g++ -std=c++14 b.cpp -lbox2d -lmingw32 -lsdl2main -lsdl2 -lglew32 -lopengl32 -o b.exe

b.cpp:(.text+0xcff): undefined reference to `__glewCreateShader'
b.cpp:(.text+0xd50): undefined reference to `__glewShaderSource'
b.cpp:(.text+0xd78): undefined reference to `__glewCompileShader'
b.cpp:(.text+0xd88): undefined reference to `__glewCreateProgram'
b.cpp:(.text+0xd95): undefined reference to `__glewAttachShader'
b.cpp:(.text+0xdaf): undefined reference to `__glewLinkProgram'
collect2.exe: error: ld returned 1 exit status

我正在使用 glew 1.13.0 Win32 和 SDL2-i686-w64-mingw32。我该怎么办?

【问题讨论】:

您是否忘记实际链接 GLEW? @immibis 什么是与 GLEW 的实际链接? -lglew32 不是链接 glew 吗? 【参考方案1】:

由于您使用的是 MinGW,您可能需要链接到 -lGLEW 而不是 -lglew32

【讨论】:

-lGLEW 选项适用于 Linux。【参考方案2】:

嗯,这完成了工作。

#ifdef _WIN32
#define GLEW_STATIC
#include "glew.c"   //I've brought glew.c from glew source folder
#else
...
#endif
...

【讨论】:

除非您真的知道自己在做什么,否则您应该永远直接包含 C 文件。

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

对“imp____glewEnableVertexAttribArray”的未定义引用

对 __isoc99_sscanf 的未定义引用

TCL - 对 g++ 的 `_imp__Tcl_ResetResult' 的未定义引用

CGAL:对 _createImage 的未定义引用

glfw + 代码块 + 对 `__gxx_personality_sj0' 的未定义引用

对“__mingw_vsscanf”的未定义引用