簡體   English   中英

使用 mingw32 在窗戶上發光

[英]Building glew on windows with mingw32

這是重復的,我很抱歉,但我沒有任何其他選擇,因為我無法對答案發表評論,而且他們沒有解決我的問題。 以下是原帖:

使用 mingw 在窗戶上發光的建築物

這是我的問題:

1) 當我嘗試@LightningIsMyName 的回答時,我收到此錯誤:

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

2) 當我嘗試@anon 的回答時,我收到此錯誤:

Makefile:1: Makefile: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()。

如果你不能以這種方式工作,試試我的(對於 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. 現在它應該工作

    不要忘記調用glewInit(); 在 OpenGL 初始化之后和使用任何擴展之前......

試試這些命令:
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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM