用OPENGL载入位图中出现的 不能将参数 1 从“char *”转换为“LPCWSTR”问题。

lzy21878 2011-01-08 04:59:33
请教各位大侠,我在学习NEHE的OPENGL教程,学到第六课中的载入位图和纹理时,发现auxDIBImageLoad(Filename)函数无法通过编译,原因是:不能将参数 1 从“char *”转换为“LPCWSTR”,我用的是VS2010,前面的程序都是用GLUT写的,这个函数是用的GLAUX,不知道是不是因为这个的原因出错。上网找了下原因,有人说改项目设置改成“多字节字符集”就可以,可是我改了之后又出新问题:无法解析的外部符号 _auxDIBImageLoadA@4,该符号在函数 "struct _AUX_RGBImageRec * __cdecl LoadBMP(char *)" (?LoadBMP@@YAPAU_AUX_RGBImageRec@@PAD@Z) 中被引用,真不知道改这个设置为什么会出现这样的错误?另请问各位,GLUT和GLAUX到底有什么区别和联系?

AUX_RGBImageRec *LoadBMP(char *Filename) // Loads A Bitmap Image
{
FILE *File=NULL; // File Handle

if (!Filename) // Make Sure A Filename Was Given
{
return NULL; // If Not Return NULL
}

File=fopen(Filename,"r"); // Check To See If The File Exists

if (File) // Does The File Exist?
{
fclose(File); // Close The Handle
return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
}

return NULL; // If Load Failed Return NULL
}
...全文
772 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wstart_lion 2012-09-28
  • 打赏
  • 举报
回复
强制转换(WCHAR*)XXX
dbgchen 2011-03-17
  • 打赏
  • 举报
回复
按阿荣说的将_T("字符串")这样处理后就可以编绎通过了。
lzy21878 2011-01-10
  • 打赏
  • 举报
回复
我按照你的改了,又重新配置了GLAUX.LIB,现在程序没报错了,但没有结果显示,我再继续研究一下。
衷心感谢阿荣~
arong1234 2011-01-08
  • 打赏
  • 举报
回复
能直接运行时要有条件的,nehe的这个代码是属于编码风格很不好的,严格限制必须是不在unicode平台才行。我上面已经告诉你怎么改了,你自己照着改即可

如果不会改,在工程设置中慢慢找,把其中关于编码的设置从unicode改为mbcs
[Quote=引用 5 楼 lzy21878 的回复:]
引用 4 楼 dizuo 的回复:
nehe的代码直接就可以运行的。
我也觉得奇怪,但用VS2010就是运行不了。我是新手,也不知道怎么改。
[/Quote]
lzy21878 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dizuo 的回复:]
nehe的代码直接就可以运行的。
[/Quote] 我也觉得奇怪,但用VS2010就是运行不了。我是新手,也不知道怎么改。
ryfdizuo 2011-01-08
  • 打赏
  • 举报
回复
nehe的代码直接就可以运行的。
lzy21878 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
你要改习惯,不要随便用char*作字符串类型,你应该用LPCTSTR作类型
而字符串诸如"r"也要写成_T("r")
你当前工程是unicode的,unicode下char*和LPCTSTR不是个类型,而你的函数参数是LPCTSTR
[/Quote] 谢谢帮忙,这个程序是NEHE自己写的代码,我刚接触OPENGL,不知道要怎么改这个程序,能不能帮忙修改一下?
某某9 2011-01-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]

你要改习惯,不要随便用char*作字符串类型,你应该用LPCTSTR作类型
而字符串诸如"r"也要写成_T("r")
你当前工程是unicode的,unicode下char*和LPCTSTR不是个类型,而你的函数参数是LPCTSTR
[/Quote]+1
arong1234 2011-01-08
  • 打赏
  • 举报
回复
你要改习惯,不要随便用char*作字符串类型,你应该用LPCTSTR作类型
而字符串诸如"r"也要写成_T("r")
你当前工程是unicode的,unicode下char*和LPCTSTR不是个类型,而你的函数参数是LPCTSTR

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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