建筑物的窗户上闪烁着明辉

Building glew on windows with mingw32

本文关键字:闪烁 窗户 建筑物      更新时间:2023-10-16

这是一个重复,我很抱歉,但我没有任何其他选择,因为我不能对答案发表评论,他们没有解决我的问题。原文如下:

Building glow on windows with mingw

我的问题是:

1)当我尝试@LightningIsMyName的答案时,我得到这个错误:

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

2)当我尝试@匿名的答案时,我得到这个错误:

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

人们说这个答案对他们有帮助,但对我不起作用。我很抱歉我重复了一个问题,但我没有其他的机会与声誉限制评论。希望你能帮上忙。谢谢。

为了找到问题的答案,我进行了多次搜索。我花了很多时间,所以我把它贴在这里帮助别人。

要使GLEW与MinGW一起工作,您应该从GLEW网站下载源代码并放入

gcc.exe from MinGWbin
path .exe from MinGW32 MinGW32 bin

到GLEW的源文件夹,并在该文件夹中创建并运行.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

你会得到你的。dll和。a文件在lib文件夹。.dll文件放到system32文件夹,.a文件放到MinGW lib文件夹

最后,如果你正在使用SFML,在GLEW之前链接SFML库,最后链接OpenGL。如果你改变链接顺序,你会得到一个链接错误。

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

试试这些命令:
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

如果你不能让它以这种方式工作,试试我的(Borland编译器):

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

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

    我知道这是多余的,但我不需要在系统更改后进行更改,如重新安装操作系统或新的编译器版本等…但是为了让它工作,你需要在glew.c:

    里面做一些改变。
    • change #include <glew.h> to #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();