对`__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”的未定义引用
TCL - 对 g++ 的 `_imp__Tcl_ResetResult' 的未定义引用