用MinGW编译《OpenGL超级宝典 SuperBibe 5th》(OpenGL蓝皮书) 示例代码
发表于 : 2016年09月29日 10:01
以下内容以及方法均参考自老外在stackoverflow上的回答,建议看看原文,因为他告诉你解决问题的思路而不只是结果。
opengl-superbible-5th-edition-set-up-problems
我将其整理修改成了用MINGW配合命令行进行编译的方法,不涉及code::blocks
1. 还未安装MinGW的,去官网下一个,我这里用的是第三方的安装包 TDM-GCC32位下载地址
2. 到 http://freeglut.sourceforge.net/ 下载最新版本的 freeglut,写此文章时的版本是freeglut-2.8.1.tar.gz
写成g++语句会很长,所以写到 Makefile 文件
提示:error: 'GLAPI' does not name a type,解决方法,在#include <GLTools.h>之后加入
#define GLAPI extern
LIBS 增加 -lopengl32 ,之后编译还会遇到几次类似的函数未定义的问题,找到它们对应的库,并增加到 LIBS 的链接中去。
最后的Makefile是这样的
注:以上方法本人在winxp以及WIN7 64位平台均测试过没有问题。
==========================================================================================================
以上某些步骤,错误解决的具体思路,请看英文原文或者2楼的详细翻译
opengl-superbible-5th-edition-set-up-problems
我将其整理修改成了用MINGW配合命令行进行编译的方法,不涉及code::blocks
1. 还未安装MinGW的,去官网下一个,我这里用的是第三方的安装包 TDM-GCC32位下载地址
2. 到 http://freeglut.sourceforge.net/ 下载最新版本的 freeglut,写此文章时的版本是freeglut-2.8.1.tar.gz
- a. 解压freeglut-2.8.1.tar.gz 得到 freeglut-2.8.1目录,复制到C盘,打开命令行,输入 "cd /d c:\freeglut-2.8.1\src"
b. 执行"gcc -O2 -c -DFREEGLUT_STATIC *.c -I../include"
c. 执行"ar rcs libfreeglut32_static.a *.o" 生成 libfreeglut32_static.a,编译过程可能出现警告,但是只要生成了.a文件,就拿来用吧
d. 在freeglut-2.8.1 目录下建立 lib 文件夹,将生成的 libfreeglut32_static.a 复制进去
- a. 解压,里面有4个目录,freeglut, linux, visualstudio 以及 src。 进入src,复制GLTools目录到C盘,打开命令行,"cd /d c:\GLTools"
b. 执行 "g++ -c *.cpp -I../include" (和之前freeglut类似,进行编译、链接、生成静态资源库。)
c. 执行 "ar rcs libGLTools.a *.o"
d. 在C:\GLTools下 建立lib目录,将 libGLTools.a 复制进去,即:C:\GLTools\lib\libGLTools.a
e. 同样是在GLTools目录,执行 "g++ -c glew.c -I../include" 然后 "ar rcs libglew.a glew.o" ,复制libglew.a 到 C:\GLTools\lib\目录
- Code: [show] | [select all]
写成g++语句会很长,所以写到 Makefile 文件
- Code: [show] | [select all]
提示:error: 'GLAPI' does not name a type,解决方法,在#include <GLTools.h>之后加入
#define GLAPI extern
- Code: [show] | [select all]
LIBS 增加 -lopengl32 ,之后编译还会遇到几次类似的函数未定义的问题,找到它们对应的库,并增加到 LIBS 的链接中去。
最后的Makefile是这样的
- Code: [show] | [select all]
注:以上方法本人在winxp以及WIN7 64位平台均测试过没有问题。
==========================================================================================================
以上某些步骤,错误解决的具体思路,请看英文原文或者2楼的详细翻译