这是重复的,我对此感到抱歉,但我没有任何其他选择,因为我无法对答案发表评论,而且他们没有解决我的问题。以下是原帖:
这是我的问题:
1)当我尝试@LightningIsMyName 的答案时,我收到此错误:
Makefile:1: *** 缺少分隔符。停下来。
2)当我尝试@anon 的答案时,我收到此错误:
Makefile:1: Makefile:1: *** 命令在第一个目标之前开始。停下来。
人们说这个答案对他们有帮助,但对我不起作用。我抱歉我以某种方式重复了一个问题,但由于声誉限制,我没有其他机会发表评论。希望你能帮忙。谢谢。
为了找到问题的答案,我进行了多次搜索。花了很多时间,所以我将其发布在这里以帮助其他人。
要使 GLEW 与 MinGW 配合使用,您应该从 GLEW 网站下载源代码并放入
来自 MinGW 的 gcc.exe
ar.exe 来自 MinGW32\mingw32 in
到 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()。
尝试这些命令:
1:
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
如果你不能以这种方式工作,请尝试我的(对于 Borland 编译器):
下载GLEW源代码(不是二进制文件)
glew.c
我的源代码是~900KB(我认为是GLEW 1.6)glew.h
我的标头约为 900KB(我认为 GLEW 1.6)我使用本地项目路径来存储GLEW
我知道这是多余的,但我不需要在系统更改后进行更改,例如重新安装操作系统或新的编译器版本等...但要使其工作,您需要在内部进行一些更改
glew.c
:
#include <glew.h>
更改为 #include "glew.h"
如果您想使用全局路径,请将其添加到编译器中,将文件复制到那里并保持原样
<>
将这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,....
现在应该可以工作了
不要忘记在 OpenGL 初始化之后和使用任何扩展之前调用
glewInit();
...
来自 https://github.com/nigels-com/glew/issues/223:
mkdir lib/
mkdir bin/
gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c
gcc -nostdlib -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 -nostdlib -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
这个对我来说适用于 mingw32 的 glew v2.1.0。 将其制作成批处理文件并以管理员身份在cmd Windows中执行它。没有给我任何重复的声明错误消息。