正如标题所示,我在尝试使用DevIL加载图像,然后将其传递给OpenGL。我正在使用这段代码作为错误控制
const char* filename = "back.bmp";
if (!ilLoadImage(filename))
{
throw runtime_error(std::string("Unable to load image") +filename);
}
,对于if语句,返回错误
error C2664: 'ilLoadImage' : cannot convert parameter 1 from 'const char *' to 'const wchar_t *'
如果我将filename
定义为const wchar_t* filename
,我会收到错误
error C2664: 'ilLoadImage' : cannot convert parameter 1 from 'const char *' to 'const wchar_t *'
所以现在我不会厌倦你好奇为什么[filename] .bmp文件的类型是wchar_t *,或者是什么wchar_t,谷歌让我困惑,我只会问我必须做什么它工作:为什么它不工作?我错过了什么?我相信,必须有一个非常短的解决方案。它看起来就像是那种错误。
谢谢。
答案 0 :(得分:4)
如果使用Unicode函数,则必须使用Unicode文本。具体来说,L
将返回静态文本的宽字符表示形式:
ilLoadImage(L"back.bmp");
如果您正在为ANSI和宽字符串编译代码,请改用_T()
,这将返回正确的字符串类型:
ilLoadImage(_T("back.bmp"));
如果你处于后一种情况并且不知道在编译时你需要什么类型的char
,请使用TCHAR
,CHAR
或WCHAR
取决于是否定义了UNICODE
。
答案 1 :(得分:0)
如果您使用的是Visual Studio,请尝试将项目更改为使用多字节字符集。