对“imp____glewEnableVertexAttribArray”的未定义引用
Posted
技术标签:
【中文标题】对“imp____glewEnableVertexAttribArray”的未定义引用【英文标题】:Undefined reference to 'imp____glewEnableVertexAttribArray' 【发布时间】:2012-07-10 23:57:25 【问题描述】:我正在尝试编译我正在使用 C++ 编写的教程并打开 gl 2.1 的程序。但是,我不喜欢 FreeGLUT,所以我决定将窗口程序更改为 SFML。但是,我的问题是,当我尝试构建程序时,出现以下错误:
obj\Debug\main.o||In function `Z6renderv':|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|36|undefined reference to `_imp____glewUseProgram'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|37|undefined reference to `_imp____glewEnableVertexAttribArray'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|52|undefined reference to `_imp____glewVertexAttribPointer'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|56|undefined reference to `_imp____glewDisableVertexAttribArray'|
obj\Debug\main.o||In function `Z11initShadersv':|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|62|undefined reference to `_imp____glewCreateProgram'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|67|undefined reference to `_imp____glewLinkProgram'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|68|undefined reference to `_imp____glewGetProgramiv'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|76|undefined reference to `_imp____glewGetAttribLocation'|
obj\Debug\main.o||In function `Z16initVertexShaderv':|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|86|undefined reference to `_imp____glewCreateShader'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|95|undefined reference to `_imp____glewShaderSource'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|96|undefined reference to `_imp____glewCompileShader'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|97|undefined reference to `_imp____glewGetShaderiv'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|103|undefined reference to `_imp____glewAttachShader'|
obj\Debug\main.o||In function `Z18initFragmentShaderv':|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|109|undefined reference to `_imp____glewCreateShader'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|119|undefined reference to `_imp____glewShaderSource'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|120|undefined reference to `_imp____glewCompileShader'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|121|undefined reference to `_imp____glewGetShaderiv'|
C:\Users\Jordanh\Documents\Code Blocks\GL_2-Lesson-1\main.cpp|128|undefined reference to `_imp____glewAttachShader'|
||=== Build finished: 18 errors, 0 warnings ===|
我在程序中包含了以下库:
#include <GL/glew.h>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
我也链接了这些:
-lsfml-system
-lsfml-window
-lopengl32
-lglu32
-lglew32
【问题讨论】:
How to use GLEW with MinGW的可能重复 【参考方案1】:*_imp__*
变体的未定义引用(名称修改)是由试图链接到由 / for Visual Studio / MSVC 编译的库引起的。
解决方案是为您的特定平台下载二进制文件或编译(这通常与 mingw32 相关)。
【讨论】:
【参考方案2】:http://julianibarz.wordpress.com/2010/05/12/glew-1-5-4-mingw32/
得到了 mingw32 的 GLEW - 项目编译正常。
【讨论】:
【参考方案3】:在包含库后使用#pragma comment(lib, "glew32.lib")
。
glew32.lib
【讨论】:
好吧,我已经下载并添加了 glew 的 lib 和 include 到代码块中的编译器目录。我刚刚添加了您的建议,编译器输出以下内容:“警告:忽略 #pragma 注释”以上是关于对“imp____glewEnableVertexAttribArray”的未定义引用的主要内容,如果未能解决你的问题,请参考以下文章