使用Code :: Blocks

时间:2016-10-05 13:15:10

标签: c++ opengl codeblocks glew

我尝试使用Code :: Blocks安装GLEW。以下是我安装和使用它所做的工作:

  1. 我已下载GLEW here
  2. 我已打开下载的zip文件,并将glew-2.0.0.zip\glew-2.0.0\include\GL中的所有文件复制到C:\Program Files (x86)\CodeBlocks\MinGW\include\GL
  3. 为了编译GLEW,我使用New-> Project->静态库在Code :: Blocks中创建了一个新项目。在该项目中,我删除了main.c并在glew-2.0.0.zip\glew-2.0.0\src中添加了三个.c文件。然后我点击了Build并得到了一个我复制到C:\Program Files (x86)\CodeBlocks\MinGW\lib的libglew.a文件。
  4. 在我的C ++项目中,我点击了Project-> Build Options。
  5. 在#defines标签的编译器设置标签中,我写了GLEW_STATIC,如下所示: screenshot
  6. 在构建选项的链接器设置选项卡中,我添加了C:\Program Files (x86)\CodeBlocks\MinGW\lib\libglew.a
  7. 在我的项目开始时,我写了#include <GL/glew.h>以包含GLEW。
  8. 为了初始化GLEW,我在main.cpp中写了GLenum initialisationGLEW(glewInit());(我已经初始化了SDL和OpenGL)。
  9. 问题在于,当我尝试编译项目时,出现以下错误:

      

    C:\ Program Files(x86)\ CodeBlocks \ MinGW \ lib \ libglew.a(glew.o):在函数glewInit_GL_VERSION_1_3': C:/Users/dduck/Desktop/glew/glew.c:7538: undefined reference to wglGetProcAddress @ 4&#39;   C:/Users/dduck/Desktop/glew/glew.c:7539:对wglGetProcAddress@4' C:/Users/dduck/Desktop/glew/glew.c:7540: undefined reference to wglGetProcAddress @ 4&#39;的未定义引用   C:/Users/dduck/Desktop/glew/glew.c:7541:未定义引用wglGetProcAddress@4' C:/Users/dduck/Desktop/glew/glew.c:7542: undefined reference to wglGetProcAddress @ 4&#39;   C:\ Program Files(x86)\ CodeBlocks \ MinGW \ lib \ libglew.a(glew.o):C:/Users/dduck/Desktop/glew/glew.c:7543:对wglGetProcAddress@4' follow C:\Program Files (x86)\CodeBlocks\MinGW\lib\libglew.a(glew.o): In function的更多未定义引用glewContextInit&#39 ;:   C:/Users/dduck/Desktop/glew/glew.c:13470:未定义引用glGetString@4' C:/Users/dduck/Desktop/glew/glew.c:13530: undefined reference to glGetIntegerv @ 8&#39;   C:/Users/dduck/Desktop/glew/glew.c:13539:对wglGetProcAddress@4' C:/Users/dduck/Desktop/glew/glew.c:13593: undefined reference to _ glewInit_GL_VERSION_1_2&#39;的未定义引用   C:\ Program Files(x86)\ CodeBlocks \ MinGW \ lib \ libglew.a(glew.o):在函数glewInit_WGL_3DL_stereo_control': C:/Users/dduck/Desktop/glew/glew.c:15973: undefined reference to wglGetProcAddress @ 4&#39;   C:\ Program Files(x86)\ CodeBlocks \ MinGW \ lib \ libglew.a(glew.o):在函数glewInit_WGL_AMD_gpu_association': C:/Users/dduck/Desktop/glew/glew.c:15986: undefined reference to wglGetProcAddress @ 4&#39;   C:/Users/dduck/Desktop/glew/glew.c:15987:对wglGetProcAddress@4' C:/Users/dduck/Desktop/glew/glew.c:15988: undefined reference to wglGetProcAddress @ 4&#39;的未定义引用   C:/Users/dduck/Desktop/glew/glew.c:15989:未定义引用wglGetProcAddress@4' C:\Program Files (x86)\CodeBlocks\MinGW\lib\libglew.a(glew.o):C:/Users/dduck/Desktop/glew/glew.c:15990: more undefined references to wglGetProcAddress @ 4&#39;跟随   C:\ Program Files(x86)\ CodeBlocks \ MinGW \ lib \ libglew.a(glew.o):在函数wglewGetExtension@4': C:/Users/dduck/Desktop/glew/glew.c:16473: undefined reference to wglGetCurrentDC @ 0&#39;   C:\ Program Files(x86)\ CodeBlocks \ MinGW \ lib \ libglew.a(glew.o):在函数wglewInit@0': C:/Users/dduck/Desktop/glew/glew.c:16486: undefined reference to wglGetProcAddress @ 4&#39;   C:/Users/dduck/Desktop/glew/glew.c:16487:对wglGetProcAddress@4' C:/Users/dduck/Desktop/glew/glew.c:16495: undefined reference to wglGetCurrentDC @ 0&#39;的未定义引用   collect2.exe:错误:ld返回1退出状态

    它说这些错误存在于C:\Users\dduck\Desktop\glew\glew.c文件中,这是我为了获取libglew.a而编译的文件之一,但它们来自我的C ++项目,而不是我尝试编译libglew.a时。我设法编译libglew.a没有任何问题。因此,我收到此错误的项目不包含C:\Users\dduck\Desktop\glew\glew.c,它只包含C:\Program Files (x86)\CodeBlocks\MinGW\lib\libglew.a。更奇怪的是,我试图删除C:\Users\dduck\Desktop\glew\glew.c,编译器仍然说该文件中存在错误。我还尝试下载已编译的libglew.a here版本并使用它而不是我编译的版本。然后发生了一些更奇怪的事情:编译器说文件C:\Users\pb\Documents\dotA\glew.c中存在一个错误(与我的libglew.a版本相同),这个文件在我的计算机上从未存在过。

    我做错了什么?为什么我在不属于项目的文件中出现错误,有时甚至不存在?我该怎么做才能解决它?

    修改

    我还尝试在链接器设置中添加opengl32,然后我只收到一个错误:

      

    C:\ Users \ dduck \ Desktop \ glew \ glew.c | 13593 |未定义引用`_glewInit_GL_VERSION_1_2&#39; |

1 个答案:

答案 0 :(得分:0)

我不知道您是否已完成操作,但是请确保在链接器中链接了以下文件:

glu32
glew32 
opengl32

因此,我知道您想使用glew32静态版本,但首先请确保动态版本正在运行。只要将glew的.dll文件与可执行文件一起放入文件夹即可。如果不起作用,请确保在编译器的include文件夹中包含glews include文件夹(idk为什么,它只是那样工作)。