【问题标题】:Building glew on windows with mingw32使用 mingw32 在 Windows 上构建 glew
【发布时间】:2014-09-10 10:12:00
【问题描述】:

这是重复的,对此我很抱歉,但我没有任何其他选择,因为我无法根据答案制作 cmets,他们也没有解决我的问题。以下是原帖:

Building glew on windows with mingw

这是我的问题:

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

Makefile:1: *** 缺少分隔符。停下来。

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

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

人们说这个 andswer 帮助了他们,但他们没有为我工作。我很抱歉我以某种方式重复了一个问题,但我没有其他机会评论声誉限制。希望你能帮忙。谢谢。

【问题讨论】:

    标签: c++ opengl makefile glew


    【解决方案1】:

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

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

    MinGW\bin 中的 gcc.exe
    MinGW32\mingw32\bin 中的 ar.exe

    到 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
    

    您将在 lib 文件夹中获得 .dll 和 .a 文件。将.dll文件放入system32文件夹,将.a文件放入MinGW lib文件夹。

    最后,如果您使用 SFML,请在 GLEW 之前链接 SFML 库,最后链接 OpenGL。如果您更改链接顺序,您将收到链接器错误。

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

    【讨论】:

    • 你是个传奇。完美运行。
    • 我很乐意提供帮助
    • 为什么mx版和非mx版大小一样?我应该把它们都链接起来吗?
    • @ShambhavGautam 不幸的是,我不再使用 Windows 或 SFML。我浏览了我的档案,但找不到项目文件。
    • @ArdaKara 没问题,用 GLAD 更容易,我只是下载源代码并构建完成,没有复杂的链接或动态混乱,建议大家使用 GLAD,以防 MinGW正在使用。顺便说一句,您编写的方式好像唯一使用 OpenGl 的库是 SFML 太奇怪了。
    【解决方案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

    【讨论】:

      【解决方案3】:

      如果你不能让它以这种方式工作,试试我的(对于 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. 将这 2 个文件复制到您的项目中

        这是如何正确地将其包含到项目中,只需将其添加到您的主源文件(您的 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(); ...

      【讨论】:

      • 我试过这个,但它没有帮助我。但是我在网上找到了一个解决方案并为 MinGW 构建了 glew,但现在它给出了链接器错误。 3 天后我仍然无法让 OpenGL 运行 :(
      • @Senhor 你对 OpenGL 或 GLEW 有问题吗?因为在 glewInit() 之前没有初始化的 OpenGL 上下文,GLEW 不能正常工作;所以首先尝试使用 OpenGL 和没有 GLEW(OpenGL 1.0)创建基本应用程序,然后才添加 GLEW ......像这样:stackoverflow.com/a/20679773/2521214
      • 我不知道为什么,但我的 OpenGL 在没有 GLEW 的情况下无法工作,所以我安装了它。然后我解决了链接器错误问题是链接顺序。现在它运作良好。感谢您的帮助。
      猜你喜欢
      • 2016-12-05
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      相关资源
      最近更新 更多