运行提示缺少OPENGL.DLL的原因

来源:互联网 发布:西南石油大学网络教学 编辑:程序博客网 时间:2024/05/17 02:29

  今天随手创建了一个简单的opengl应用,结果运行时弹出对话框说找不到OPENGL.DLL。我奇怪得是以前从来未发生这种情况,不管怎么说先从网上下载一个吧,但是因为DLL的版本和库文件匹配不起来,所以函数入口点错误。我又回到一开始思考的,过去从来没有发生过,我又把代码和以前的对比了一下,发现因为这次随手写写没有加上windows.h,于是我把它加上,运行,一切顺利。

  我在opengl官网faq上找到一段文字,大概意思是微软要求windows的系统dll使用得是一套特殊的调用协议而不是大多数win32 c编译器所使用的,所以为了能够适应非标准的c协定,它们在gl.h里给opengl调用注释了一些宏,这样win32 c编译器就能够进行一些系统调用了,而这些宏正是在windows.h里所定义的。

  结合这些文字,我的推测是这样的:

  opengl是个向前兼容的图形库,OPENGL.DLL是老版本的opengl所必需的,现在的opengl应用都调用opengl32.dll,这个dll是自动安装在每一个xp以后的系统中的。因为没有windows.h所提供的某些信息所以opengl不知道自己现在应该调用哪个版本的指令,它默认向前看齐,而加上最新的windows.h后它才确定了自己所要调用的版本是opengl32.dll。

  上述语段只是猜测,欢迎大家反驳。

原创粉丝点击