freeglut-3.0.0这个库咱就不介绍了,开门见山。
可以去咱的资源下载:http://download.csdn.net/detail/sugar13/8534037
也可以去官网下载:http://sourceforge.net/projects/freeglut/
新建工程,工程类型为Win32 Static Library,工程起名叫freeglut_static,然后解压源码包,将得到的“freeglut-3.0.0”文件夹放到工程目录下(注意如果解压后的文件夹重复了两层“freeglut-3.0.0”,请手动去掉一层)。
打开“freeglut-3.0.0\include\GL”文件夹,发现里面有4个.h文件,将其中以字母f打头的3个文件添加到工程中。
打开“freeglut-3.0.0\src”文件夹,发现里面有mswin、util之类的子文件夹,也有“fg_callbacks.c”、“fg_init.h”等等的源文件。将这里的24个以字母f打头的.c文件和5个.h文件全部添加到工程中(注意“gles_stubs.c”文件不要添加)。
打开“freeglut-3.0.0\src\mswin”文件夹,将其中的13个.c文件和1个.h文件全部添加到工程中。
打开“freeglut-3.0.0\src\util”文件夹,里面只有两个源文件,都添加到工程中。
在工程目录下新建一个名叫“config.h”的文件,添加到工程中。打开该文件,向其中添加如下代码:
#include "util\xparsegeometry_repl.h"
添加几组预处理,FREEGLUT_STATIC,HAVE_CONFIG_H,WINVER=0x0500,_WIN32_WINNT=0x0500,注意多个预处理之间,使用英文逗号进行分隔;第1个表示咱要编译的是静态版本的库,第2个表示咱使用了“config.h”文件,后两个表示咱要求的Windows版本至少为5.0(XP的Windows版本是5.1,Win7的Windows版本是6.1,大概……)。
添加几个头文件路径,“.”,“.\freeglut-3.0.0\include”,注意“.”路径表示工程所在文件夹,多个路径之间,使用英文逗号进行分隔。
打开工程属性对话框,在Library选项卡下,修改输出文件的名字,Debug版本的输出名字改为“freeglut_staticd.lib”,Release版本的输出名字改为“freeglut_static.lib”,就可以批量编译工程的Debug版本和Release版本了。不管哪个版本,都是0个Error和1个Warning,这个Warning是:warning C4018: '<' : signed/unsigned mismatch,目测不是什么严重的Warning。
找到“freeglut-3.0.0\include\GL”文件夹下的以字母f打头的3个文件,复制出来;找到生成的“freeglut_staticd.lib”和“freeglut_static.lib”这两个文件,复制出来;将这5个文件打个包,就是咱最终生成的静态库。
新建一个工程,工程类型为Win32 Console Application,工程起名叫freeglut_test。将最终生成的静态库,包括的5个文件全部放置在工程目录下,然后新建源文件“freeglut_test.c”并添加到工程中,测试代码如下:
#define FREEGLUT_STATIC #include "freeglut.h" #ifdef NDEBUG #pragma comment(linker,"/entry:mainCRTStartup /subsystem:Windows ") #endif void display( void ) { glutWireTeapot (0.5); glutSwapBuffers (); return; } int main( int argc, char *argv[] ) { glutInit (&argc, argv); glutInitDisplayMode (GLUT_DOUBLE); glutInitWindowSize (256, 256); glutCreateWindow ("freeglut test"); glutDisplayFunc (display); glutMainLoop(); return 0; }运行效果很好。
使用静态库的优点,就是生成的.exe文件不必附带.dll文件即可拷到别的电脑上运行,缺点自然是生成的文件尺寸比较大,不过也大不到哪去,Release版本的静态库尺寸也就0.6MB左右。如果您喜欢使用动态库,用类似的方法也可以建立,注意在库工程和测试工程中,去掉FREEGLUT_STATIC这个宏定义就行了。