为什么
鉴于不想装Visual Studio,于是想借助轻巧的Dev C++配置OpenGL的开发环境(能够在Visual Studio开发的还是在Visual Studio上开发吧,毕竟案例较多)。
怎么做
一、相关的库
1、OpenGL Library(核心库)
- 包括115个函数,前缀:“gl”
- 例:
glColor3f()
,glTranslate3f()
- 需要 gl.h,openGL32.lib,openGL32.dll
2、OpenGL utility library(实用程序库)
- 包括43个函数,前缀:“glu"
- 例:
gluPerspective()
- 需要 glu.h,glu.lib,glu.dll
3、辅助OpenGL编程的工具库
- 如freeglut(free OpenGL Utility Toolkit)
- 需要 glut.h,freeglut.h,freeglut32.lib,freeglut32.dll
freeglut功能
- 执行与窗口相关的功能
- 鼠标、键盘交互功能
- 右键菜单功能
- 高层的建模命令(如
glutSolidSphere(1.0)
)
4、Window interface library
与平台相关的窗口界面库
- 前缀:“wgl","glx”,“pgl”,Agl…
- 例:
wgICreateContext(m_hDC)
头文件 | 静态链接库 | 动态链接库 | |
---|---|---|---|
OpenGL核心库 | gl.h | openGL32.lib | openGL32.dll |
OpenGL实用库 | glu.h | glu32.lib | glu32.dll |
OpenGL辅助库freeglut | freeglut.h | freeglut32.lib | freeglut32.dll |
这里给出网盘链接(访问码:ji19)
二、将三类文件拷贝到相应目录下
这里用的是32位版本
1、将所有的 *.h
文件(包括freeglut.h
,glut.h
,freeglut_ext.h
,freeglut_std.h
)拷贝到Dev C++的安装目录的 x86_64-w64-mingw32\include\GL
目录下,如 D:\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\GL
。
2、将所有的 *.lib
文件(包括 freeglut.lib
等)拷贝到Dev C++的安装目录的 lib
目录下,如 D:\Dev-Cpp\MinGW64\x86_64-w64-mingw32\lib32
。
3、将所有的 *.dll
文件(包括 freeglut.dll
等)拷贝到 C:Windows\SysWOW64
目录下。
如下图
三、一些问题
1、编译器配置
连接时添加命令 -lglu32 -lopengl32 -lwinmm -lgdi32 -lfreeglut
2、编译错误
类似于以下 skipping incompatible
错误是因为链接库文件时,库文件版本与平台版本不对应(在64位的机器上安装了32位的库或者在32位的机器上安装了64位的库),导致无法完成链接。也有可能是编译器配置的原因。
我的碰到的问题是:编译器选择的是64版,但是 xxx.a
或 xxx.lib
是32版,当然不兼容了
D:/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible D:\Dev-Cpp\MinGW64\lib/libopengl32.a when searching for -lopengl32
D:/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible D:\Dev-Cpp\MinGW64\lib\libopengl32.a when searching for -lopengl32
D:/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible D:\Dev-Cpp\MinGW64\lib/freeglut.lib when searching for -lfreeglut
注意:
请使用同一目录下的文件,以免出现无法预料的错误
最终结果
经过以上步骤,编译运行例子程序后结果如下图
参考链接
1、中国大学MOOC,北京林业大学杨刚教授 - 图形编程技术
2、优快云博文,/usr/bin/ld: skipping incompatible解决方案
3、优快云博文,devc++配置OpenGL