opengl 错误看不太懂?

shiter
人工智能领域优质创作者
博客专家认证
2012-08-23 10:20:43


NeNe_lesson_object.obj : error LNK2019: unresolved external symbol _auxDIBImageLoadA@4 referenced in function "struct _AUX_RGBImageRec * __cdecl LoadBMP(char *)" (?LoadBMP@@YAPAU_AUX_RGBImageRec@@PAD@Z)
1>F:\shiter\code\NeNe_lesson_object\Debug\NeNe_lesson_object.exe : fatal error LNK1120: 1 unresolved externals


代码:就是nene的教程,纹理映射,vs 2010 express


#include "stdafx.h"
#include <windows.h> // Windows的头文件
#include<stdio.h>
//#include <gl/glew.h> // 包含最新的gl.h,glu.h库
//#include <gl/glut.h> // 包含OpenGL实用库
#include <gl/glaux.h> // GLaux库的头文件
//#include<gl/GLU.h>




#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")


HGLRC hRC=NULL; // 窗口着色描述表句柄
HDC hDC=NULL; // OpenGL渲染描述表句柄
HWND hWnd=NULL; // 保存我们的窗口句柄
HINSTANCE hInstance; // 保存程序的实例

bool keys[256]; // 保存键盘按键的数组
bool active=TRUE; // 窗口的活动标志,缺省为TRUE
bool fullscreen=TRUE; // 全屏标志缺省,缺省设定成全屏模式

GLfloat rtri; // 用于三角形的角度
GLfloat rquad; // 用于四边形的角度

GLfloat xrot; // X 旋转量
GLfloat yrot; // Y 旋转量
GLfloat zrot; // Z 旋转量

GLuint texture[1]; // 存储一个纹理

AUX_RGBImageRec *LoadBMP(char *Filename) // 载入位图图象
{
FILE *File=NULL; // 文件句柄

if (!Filename) // 确保文件名已提供
{
return NULL; // 如果没提供,返回 NULL
}
File=fopen(Filename,"r"); // 尝试打开文件
if (File) // 文件存在么?
{
fclose(File); // 关闭句柄
return auxDIBImageLoad(Filename); // 载入位图并返回指针
}
return NULL; // 如果载入失败,返回 NULL
}


int LoadGLTextures() // 载入位图(调用上面的代码)并转换成纹理
{

int Status=FALSE; // 状态指示器
AUX_RGBImageRec *TextureImage[1]; // 创建纹理的存储空间
memset(TextureImage,0,sizeof(void *)*1); // 将指针设为 NULL
// 载入位图,检查有无错误,如果位图没找到则退出
if (TextureImage[0]=LoadBMP("shit.bmp"))
{
Status=TRUE; // 将 Status 设为 TRUE
glGenTextures(1, &texture[0]); // 创建纹理

// 使用来自位图数据生成 的典型纹理
glBindTexture(GL_TEXTURE_2D, texture[0]);
// 生成纹理
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // 线形滤波
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // 线形滤波
}
if (TextureImage[0]) // 纹理是否存在
{
if (TextureImage[0]->data) // 纹理图像是否存在
{
free(TextureImage[0]->data); // 释放纹理图像占用的内存
}

free(TextureImage[0]); // 释放图像结构
}
return Status; // 返回 Status
}





怎么办?怎么调试啊...求指导...
...全文
246 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shiter 2012-08-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
这也看不懂? #pragma comment(lib,"glaux.lib")
就OK了
[/Quote]
谢谢,解决了,初学,不太明白
我想问问:这个信息里怎么看出需要引用这个静态库呢?
葳蕤 2012-08-25
  • 打赏
  • 举报
回复
错误信息里面有提示的,没有找到auxDIBImageLoad的实现,一般就是没把静态库包含进来。
the_venus 2012-08-24
  • 打赏
  • 举报
回复
这也看不懂? #pragma comment(lib,"glaux.lib")
就OK了
shiter 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
没有定义这个函数,或者没有导入要用到的库
随便问下,你的工程是在VS2003下编译的?
[/Quote]
2010啊,express版,我基本能搞的头文件都包含了啊,库的话,也之前配置好了的,
nene的教程前几个例子都能用的
添加了,我上面的代码就不行了,初学不知道什么问题...
大拙男 2012-08-23
  • 打赏
  • 举报
回复
没有定义这个函数,或者没有导入要用到的库
随便问下,你的工程是在VS2003下编译的?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧