编译OpenGL程序遇到的一个奇怪问题

今天编译一个OpenGL程序时遇到了一个很奇怪的问题。

一个简短的代码,实现画一个三角形。这个工程文件就包含一个cpp文件。工程以前运行时正确的,现在打开运行也正确。我的OpenGL是按照这篇文章进行配置的:

点击打开链接。应该没有什么问题。

但是当我新建一个工程并把原来的代码拷贝过来,运行便出错。而且我记得以前建立那个工程的时候并没有配置什么东西。为什么两个工程代码一模一样但是运行结果不一样呢?甚是郁闷啊!

下面贴代码:

#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>LINK : 没有找到 E:\学习\程序练习\OpenGL\Test\Debug\Test.exe 或上一个增量链接没有生成它;正在执行完全链接
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:\学习\程序练习\OpenGL\Test\Debug\Test.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>生成日志保存在“file://e:\学习\程序练习\OpenGL\Test\Test\Debug\BuildLog.htm”
1>Test - 3 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========


在网上找了好久,终于找到了解决办法:在#include <GL/glut.h>之前加上下列代码:

#ifndef GLUT_DISABLE_ATEXIT_HACK #define GLUT_DISABLE_ATEXIT_HACK #endif但是为什么要加这个呢?

还是不太清楚。希望谁知道能够帮鄙人解惑。感激不尽~~~


转载于:https://www.cnblogs.com/xiajun/archive/2011/11/14/2298630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值