用mingw32在窗户上建立glew

时间:2014-07-19 10:03:18

标签: c++ opengl makefile glew

这是一个副本,我很抱歉,但我没有任何其他选择,因为我无法对答案发表评论,但他们没有解决我的问题。这是原帖:

Building glew on windows with mingw

这是我的问题:

1)当我尝试@ LightningIsMyName的答案时,我收到此错误:

  

Makefile:1:***缺少分隔符。停止。

2)当我尝试@ anon的答案时,我收到了这个错误:

  

Makefile:1:Makefile:1:***命令在第一个目标之前开始。停止。

人们说这个并且帮助了他们,但他们并没有为我工作。我不知道我在某种程度上重复了一个问题,但我没有其他机会对评论的声望限制。希望你能帮忙。感谢。

3 个答案:

答案 0 :(得分:9)

我在网上搜索太多,无法找到问题的答案。我花了很多时间,所以我发布它来帮助别人。

要让GLEW与MinGW合作,您应该从GLEW网站下载源代码并输入

  

来自MinGW \ bin的gcc.exe        来自MinGW32 \ mingw32 \ bin的ar.exe

到GLEWs源文件夹,然后在该文件夹中创建并运行.bat:

gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a    -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
ar cr lib/libglew32.a src/glew.o

gcc -DGLEW_NO_GLU -DGLEW_MX -O2 -Wall -W -Iinclude  -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
ar cr lib/libglew32mx.a src/glew.mx.o

您将在lib文件夹中获取.dll和.a文件。将.dll文件放到system32文件夹中,并将.a文件放到MinGW lib文件夹中。

首先链接链接SFML库,然后链接GLEW和最后链接OpenGL。如果更改链接顺序,则会出现链接器错误。

在创建窗口后不要忘记调用glewInit()。

答案 1 :(得分:2)

尝试以下命令:
1:gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c
2:gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
3:ar cr lib/libglew32.a src/glew.o

答案 2 :(得分:1)

如果你能以这种方式工作,请尝试我的(对于Borland编译器):

  1. 下载GLEW源代码(不是二进制文件)

    • glew.c我的源代码是~900KB(我认为是GLEW 1.6)
    • glew.h标题是〜900KB(我认为是GLEW 1.6)
  2. 我使用本地项目路径来存储GLEW

    我知道它是多余的,但我不需要在重新安装操作系统或新的编译器版本等系统更改后进行更改......但为了使其工作,您需要在glew.c内进行一些更改:

    • #include <glew.h>更改为#include "glew.h"

    如果你想使用全局路径然后将它添加到你的编译器,在那里复制文件并按原样保留<>

  3. 将这两个文件复制到您的项目中

    这是如何正确地将它包含到项目中,只需将其添加到您的主源文件(您的winmain或main函数所在的位置):

    #include <windows.h> // optional windows
    #include <math.h>    // optional
    #define GLEW_STATIC  // this configure header and source of GLEW to compile correctly 
    #include "glew.c"    // header is included inside so no need to duplicate include
    // here are the OpenGL includes like: gl.h,glext.h,....
    
  4. 现在应该有效

    初始化OpenGL之后,在使用任何扩展程序之前,不要忘记调用glewInit(); ...