首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 平面设计 > 图形图像 >

为何运行成功的代码新建一个工程就出错

2013-01-11 
为什么运行成功的代码新建一个工程就出错?本帖最后由 xiajun07061225 于 2011-11-14 19:22:50 编辑下面是

为什么运行成功的代码新建一个工程就出错?
本帖最后由 xiajun07061225 于 2011-11-14 19:22:50 编辑 下面是我的一段OpenGL代码,画一个三角形。这个代码的工程文件以前运行成功,现在打开运行也成功。
OpenGl是按照这篇文章配置的,
http://blog.csdn.net/xiajun07061225/article/details/6869040
。应该没有问题。
但是我现在新建一个工程,把代码完全复制过来就出错。我记得当时也没有另外配置什么东西啊,为什么现在新建工程代码不变也出错呢?
下面是代码:

#include <GL/glut.h>

void init()
{
glClearColor(0.0,0.0,0.0,0.0);
glShadeModel(GL_SMOOTH);//渲染模式
}

void triangle()
{
glBegin(GL_TRIANGLES);
glColor3f(1.0,0.0,0.0);
glVertex2f(5.0,5.0);
glColor3f(0.0,1.0,0.0);
glVertex2f(25.0,5.0);
glColor3f(0.0,0.0,1.0);
glVertex2f(5.0,25.0);
glEnd();
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT);
triangle();
glFlush();
}

void reshape(int w,int h)
{
glViewport(0,0,(GLsizei)w,(GLsizei)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w <= h)
gluOrtho2D(0.0,30.0,0.0,30.0 * (GLfloat)h / (GLfloat)w);//定义二维投影矩阵
else
gluOrtho2D(0.0,30.0 * (GLfloat)w / (GLfloat)h,0.0,30.0);
glMatrixMode(GL_MODELVIEW);
}

int main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutMainLoop();
return 0;
}


出错信息:
1>------ 已启动生成: 项目: Test, 配置: Debug Win32 ------
1>正在编译...
1>Test.cpp
1>正在链接...
1>Test.obj : error LNK2019: 无法解析的外部符号 __imp____glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用
1>Test.obj : error LNK2019: 无法解析的外部符号 __imp____glutCreateWindowWithExit@8,该符号在函数 _glutCreateWindow_ATEXIT_HACK@4 中被引用
1>E:\学习\程序练习\Test\Debug\Test.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>生成日志保存在“file://e:\学习\程序练习\Test\Test\Debug\BuildLog.htm”
1>Test - 3 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

请教大侠,这是为什么呢?
[解决办法]
不大明白,请高手解决吧
[解决办法]
有没有使用外部引用的库啊?在以前那个工程里右键看一下项目属性,链接器
[解决办法]
“在#include <GL/glut.h>前面加上了一句:  
#define GLUT_DISABLE_ATEXIT_HACK”

http://blog.sina.com.cn/s/blog_639bd2d00100vu7d.html
[解决办法]
 Note that the __glut*WithExit routines should NEVER be called directly.   
   To avoid the atexit workaround, #define GLUT_DISABLE_ATEXIT_HACK.    
在4楼的地址找到这句话。

热点排行