帖子
由 523066680 » 2016年09月22日 16:20
环境和工具:
WIN7 64位,MinGW,MSYS2.0
配置:
另外下载的库:
freeglut-MinGW-3.0.0-1.mp.zip,glew-1.13.0.zip
解压至
D:\OGL\freeglut-MinGW-3.0.0-1.mp
D:\OGL\glew-1.13.0
freeglut已经是编译好了dll的,可以直接用。glew需要手动编译一次,打开MinGW-w64 Win32 Shell,进入D:\OGL\glew-1.13.0
执行 make 命令
$ make
gcc -DGLEW_NO_GLU -DGLEW_BUILD -O2 -Wall -W -Iinclude -o tmp/mingw/default/shared/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll tmp/mingw/default/shared/glew.o -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x lib/glew32.dll
gcc -DGLEW_NO_GLU -DGLEW_STATIC -O2 -Wall -W -Iinclude -o tmp/mingw/default/static/glew.o -c src/glew.c
ar rv lib/libglew32.a tmp/mingw/default/static/glew.o
a - tmp/mingw/default/static/glew.o
ar: creating lib/libglew32.a
strip -x lib/libglew32.a
sed \
-e "s|@prefix@|/usr|g" \
-e "s|@libdir@|/usr/lib|g" \
-e "s|@exec_prefix@|/usr/bin|g" \
-e "s|@includedir@|/usr/include/GL|g" \
-e "s|@version@|1.13.0|g" \
-e "s|@cflags@||g" \
-e "s|@libname@|glew32|g" \
-e "s|@requireslib@|glu|g" \
< glew.pc.in > glew.pc
gcc -DGLEW_NO_GLU -DGLEW_MX -DGLEW_BUILD -O2 -Wall -W -Iinclude -o tmp/mingw/mx/shared/glew.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll tmp/mingw/mx/shared/glew.o -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x lib/glew32mx.dll
gcc -DGLEW_NO_GLU -DGLEW_MX -DGLEW_STATIC -O2 -Wall -W -Iinclude -o tmp/mingw/mx/static/glew.o -c src/glew.c
ar rv lib/libglew32mx.a tmp/mingw/mx/static/glew.o
a - tmp/mingw/mx/static/glew.o
ar: creating lib/libglew32mx.a
strip -x lib/libglew32mx.a
sed \
-e "s|@prefix@|/usr|g" \
-e "s|@libdir@|/usr/lib|g" \
-e "s|@exec_prefix@|/usr/bin|g" \
-e "s|@includedir@|/usr/include/GL|g" \
-e "s|@version@|1.13.0|g" \
-e "s|@cflags@|-DGLEW_MX|g" \
-e "s|@libname@|glew32mx|g" \
-e "s|@requireslib@|glu|g" \
< glew.pc.in > glewmx.pc
gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -o tmp/mingw/default/shared/glewinfo.o -c src/glewinfo.c
gcc -O2 -Wall -W -Iinclude -o bin/glewinfo.exe tmp/mingw/default/shared/glewinfo.o -Llib -lglew32 -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x bin/glewinfo.exe
gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -o tmp/mingw/default/shared/visualinfo.o -c src/visualinfo.c
gcc -O2 -Wall -W -Iinclude -o bin/visualinfo.exe tmp/mingw/default/shared/visualinfo.o -Llib -lglew32 -L/mingw/lib -lopengl32 -lgdi32 -luser32 -lkernel32
strip -x bin/visualinfo.exe
生成的 dll 和 lib文件位于 glew-1.13.0\lib 目录
编译、运行
进入随书示例代码 Code\CHAPTER02\WINDOWS_VERSIONS
修改 example1.cpp ,在 glewInit(); 前面加上 glewExperimental = GL_TRUE;
建立makefile文件,内容如下:
MAIN=example1
CC=g++
LIBDIR= -LD:/OGL/glew-1.13.0/lib -LD:/OGL/freeglut-MinGW-3.0.0-1.mp/lib/x64
INCDIR= -ID:/OGL/glew-1.13.0/include -ID:/OGL/freeglut-MinGW-3.0.0-1.mp/include -I../../include
LIBS= -lfreeglut -lglew32 -lopengl32 -lwinmm -lgdi32
$MAIN:
${CC} -o ${MAIN} ../../Common/InitShader.cpp $(MAIN).cpp ${INCDIR} ${LIBDIR} ${LIBS}
在终端执行 make (这里不要求在MSYS终端执行,可以在cmd.exe执行)
检查是否生成 example1.exe
将 D:\OGL\freeglut-MinGW-3.0.0-1.mp\bin\x64\freeglut.dll 和 D:\OGL\glew-1.13.0\lib\glew32.dll 复制到执行文件所在目录,
运行结果:
如果提示
代码: 全选
---------------------------
example1.exe - 应用程序错误
---------------------------
应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。
---------------------------
确定
---------------------------
通常是 freeglut.dll 或者 glew.dll 的版本不对(32位 64位的区别),或者这两个dll没有放置到运行环境中