Open GL的安装和认识

      OpenGL的配置问题

        刚刚开始学习AR,要先配置Open GL和ARToolKit他们在VS2010里面的环境,当然,我个人用的是VS2010,其他环境下的配置要找相配套的方法。

        网上的安装Open GL的教程都一样,要先下载一系列的安装包,其中glut.dll,glut32.dll,glut.lib,glut32.lib拷贝到对应的VS2010目录下的包,如果你用的是vs2015或者是VC,当然还有其他,那么就拷贝到对应的软件下的目录,网上是有教程的,基本上Open GL就配置完成,然后运行一个关于Open GL的控制台程序,导入关于glut.h的头文件,就会出现OpenGL的测试结果,这个比较简单,一般不会出现什么错。


       我配置的时候出现了无法打开文件“glut32.lib的问题,原因是找错了lib包,同学们要看清楚是哪个包,解决结果是找到VC++目录下,库目录包含相应glut32.lib的目录,这个错误比较简单,还需要注意的是,有的同学的是win32的,有的是win64的,配置的时候要区分开,我个人的是64位操作系统,慇�现了无法打开文件“glut32.lib的问题,原因是找错了lib包,同学们要看清楚是哪个包,解决结果是找到VC++目录下,库目录包含相应glut32.lib的目录,这个错误比较简单,还需要注意的是,有的同学的是win32的,有的是win64的,配置的时候要区分开,我个人的是64位操作系统,所以放置在SysWOW64文件夹中的。

       在运行OpenGL也可能会出现“程序无法启动,因为计算机中丢失glut32.dll”的问题,关于这个问题,http://blog.csdn.net/tyxkzzf/article/details/40789901,这里的博客有详细介绍,最后博主解释的是吧WOw64文件夹里面的gult.dll代替了要执行的Open GL程序的目录里面的dll程序。


 1.关于dll是什么?

     关键词:dll和.dll

   Windows应用程序中,实行了模块化设计,也就是说并不是每个应用程序都编写完所有的功能代码,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,我们称之为dll文件,dll是一个包含可由多个程序同时使用的代码和数据的库,类似于一个函数库动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数

      举个栗子,在 Windows 操作系统中,Comdlg32 DLL(一个动态链接库) 执行与对话框有关的函数。因此,每个程序都可以使用该 DLL 中包含的功能(函数)来实现“打开”对话框(实现功能)。

      分割成许多dll有助于促进代码重用内存的有效使用。通过使用 DLL,程序可以实现模块化,由相对独立的组件组成。

     我自己的理解就是dll是封装好的函数(各种各样的动态链接库),当我们执行exe程序时,exe不可能就那样执行,需要去调用dll文件里面的函数的来实现exe程序。类似于C语言中,我们在前面定义函数,把每个函数写好,在最后Main主函数里面声明并调用我们前面写到的函数,Main就相当于exe程序,而我们前面写到的函数就相当于dll文件,不过我们用到的dll文件都是写好的,看不到具体内容,都是封装好的,我们只需要调用这个函数,得到一个返回值,返回到exe里面。当然,前面提到的类似于C语言,只是一个比喻,其实本质还是不一样的,这是借C语言有一个形象的理解。

      dll文件是数据库链接文件,dll是动态链接库。.dll是一种后缀

    一般来说,DLL 是一种磁盘文件,以.dll、.DRV、.FON、.SYS 和许多以 .EXE 为扩展名的系统文件都可以是 DLL
后缀为dll的数据库文件为动态链接库,一个 DLL 在内存中只有一个实例。动态链接库通常都不能直接运行,也不能接
收消息。它们是一些独立的文件




2.关于.lib是什么?

      .lib和lib文件

    lib是库的意思。

   .lib是一种文件名后缀,代表的是静态数据连接库,在windows操作系统中起到链接程序和函数的作用。

     lib文件通过编译才可以使用,编译分静态与动态之分,静态编译将导出声明和实现都放在lib中,编译后

是将所有代码嵌套在程序中,直接可以当成程序的一部分来使用;动态LIB文件相当于一个C语言中的h文件,是函数导出部分的声明,不将代码放入程序中,只是将函数地址存在程序中,然后调用DLL来实现函数具体操作,运行时候需要相应的dll文件支持。

   我自己的理解是,lib也类似一个函数库,里面写了相应方法的代码,而lib有静态和动态之分,静态的lib文件是直接将文件里面的代码嵌套,也就是直接加到程序里面的;而动态的是要调用dll来实现功能。



3.关于SystemWOW64和System32



4.关于.h文件,lib文件,dll文件,obj文件

    数据库有静态数据库(.lib文件)和动态数据库(.dll文件)

     一个lib文件是obj文件的集合

      比起把所有功能都写在一个解决方案中,使用dll和lib既能区分工作和功能,又能方便的管理

 lib是编译时用到的,dll是运行时用到的。如果要完成源代码的编译,只需要lib;如果要使动态链接的程序运行起来,只需要dll。





你可能感兴趣的:(AR)