zoukankan      html  css  js  c++  java
  • 编译freeglut-3.0.0的Windows版静态库,及其使用示例

    freeglut-3.0.0这个库咱就不介绍了,开门见山。

    1、下载源码

    可以去咱的资源下载:http://download.csdn.net/detail/sugar13/8534037

    也可以去官网下载:http://sourceforge.net/projects/freeglut/

    2、建立工程(以VC6为例)

    新建工程,工程类型为Win32 Static Library,工程起名叫freeglut_static,然后解压源码包,将得到的“freeglut-3.0.0”文件夹放到工程目录下(注意如果解压后的文件夹重复了两层“freeglut-3.0.0”,请手动去掉一层)。

    打开“freeglut-3.0.0includeGL”文件夹,发现里面有4个.h文件,将其中以字母f打头的3个文件添加到工程中。

    打开“freeglut-3.0.0src”文件夹,发现里面有mswin、util之类的子文件夹,也有“fg_callbacks.c”、“fg_init.h”等等的源文件。将这里的24个以字母f打头的.c文件和5个.h文件全部添加到工程中(注意“gles_stubs.c”文件不要添加)。

    打开“freeglut-3.0.0srcmswin”文件夹,将其中的13个.c文件和1个.h文件全部添加到工程中。

    打开“freeglut-3.0.0srcutil”文件夹,里面只有两个源文件,都添加到工程中。

    3、配置工程

    工程目录下新建一个名叫“config.h”的文件,添加到工程中。打开该文件,向其中添加如下代码:

    #include "utilxparsegeometry_repl.h"

    请打开工程属性对话框,同时选中Debug版本和Release版本的工程属性(也就是选择All configurations),在C/C++选项卡下,选择Preprocessor列表:

    添加几组预处理,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.0include”,注意“.”路径表示工程所在文件夹,多个路径之间,使用英文逗号进行分隔

    4、编译工程

    打开工程属性对话框,在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.0includeGL”文件夹下的以字母f打头的3个文件,复制出来;找到生成的freeglut_staticd.lib”和freeglut_static.lib”这两个文件,复制出来;将这5个文件打个包,就是咱最终生成的静态库。

    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;
    }
    
    运行效果很好。
    PS:

    使用静态库的优点,就是生成的.exe文件不必附带.dll文件即可拷到别的电脑上运行,缺点自然是生成的文件尺寸比较大,不过也大不到哪去,Release版本的静态库尺寸也就0.6MB左右。如果您喜欢使用动态库,用类似的方法也可以建立,注意在库工程和测试工程中,去掉FREEGLUT_STATIC这个宏定义就行了。

  • 相关阅读:
    经典SQL语句大全 学者必看
    13个SQL优化技巧
    全面解析SQL SERVER 的左右内连接
    ORM框架
    JPA SQL 的复杂查询createNamedQuery
    SQL 复杂查询
    前端学习(十三)js运算符(笔记)
    前端学习(十二)js数据类型(笔记)
    前端学习(十一)函数(笔记)
    前端学习(十)初识js(笔记)
  • 原文地址:https://www.cnblogs.com/sugar13/p/10216604.html
Copyright © 2011-2022 走看看