OpenGL 学习错误备忘

1. Q: 

    error LNK2019: 无法解析的外部符号 ___glutCreateWindowWithExit@8 ,该符号在函数 _glutCreateWindow_ATEXIT_HACK@4 中被引用

    error LNK2019: 无法解析的外部符号 ___glutInitWithExit@12 ,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用

    fatal error LNK1120: 2 个无法解析的外部命令

    A:

    glut.h的注释   Note that the __glut*WithExit routines should NEVER be called directly.  To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK.  

    在#include <GL/glut.h>前面加上了一句:  #define GLUT_DISABLE_ATEXIT_HACK 即可


2. Q:

    在运行《OpenGL编程指南(第五版)》中文版blendeqn.c时,遇到错误:

    e:\OpenGL\OpenglMyself\OpenGL\06_01_Blendeqn\Blendeqn.cpp(62): error C2065: “GL_FUNC_ADD” : 未声明的标识符

    A:

    出错原因是:glBlendEquation是OpenGL扩展部分的函数。解决方法是安装OpenGL的glew扩展库。
   首先下载glew库:http://glew.sourceforge.net/  

   然后进行安装:
   拷贝glew32.dll至system32文件夹下,拷贝glew32.lib至VC目录下lib文件夹,拷贝glew.h和wglew.h至VC目录下include/GL目录下。
   在程序开始要导入头文件:#include <GL/glew.h>。  
   其次还要导入库文件glew32.lib  查看 http://blog.csdn.net/xiajun07061225/article/details/6938740


3. Q:

    error C2381: “exit” : 重定义;__declspec(noreturn) 不同

    A:  一、

#if defined(_WIN32)
# ifndef GLUT_BUILDING_LIB
extern _CRTIMP void __cdecl exit(int);

上面是glut.h中对exit的使用,意思是如果没有定义宏‍GLUT_BUILDING_LIB,就使用它的exit,那我们就在项目的属性——预处理器 里定义这个宏,这样就不执行glut.h中的exit了,而只执行stdlib.h中的exit。这样也就不会冲突了。对了,还要在附加依赖项里手动加上‍glut32.lib glu32.lib opengl32.lib,因为我们定义了‍宏‍GLUT_BUILDING_LIB,glut.h文件就不会为我们自动生成这三个附加依赖项了。

         二、

stdlib.h(406) : error C2381: “exit”: 重定义;__declspec(noreturn) 不同
glut.h(146) : 参见“exit”的声明

解决方法:#include <GL/glut.h>
#include <stdlib.h>
改成:
#include <stdlib.h>
#include <GL/glut.h>
通过。

OpenGL和C++有不太融合的地方,在include时要让标准C++类库的头文件位于GLUT图形库头文件之前。 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值