2

正如标题所示,我正在尝试使用 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 *'

如果我定义filenameconst wchar_t* filename,我会得到错误

error C2664: 'ilLoadImage' : cannot convert parameter 1 from 'const char *' to 'const wchar_t *'

所以现在我不会因为好奇为什么 [filename].bmp 文件的类型是 wchar_t* 或 wchar_t 是什么而让您感到厌烦,谷歌对此感到困惑,我只会问我必须做什么才能使其工作:为什么它不起作用?我错过了什么?我敢肯定,对此必须有一个非常简短的解决方案。它看起来像那种错误。

谢谢你。

4

2 回答 2

4

如果使用 Unicode 函数,则必须使用 Unicode 文本。具体来说,L将返回静态文本的宽字符表示:

ilLoadImage(L"back.bmp");

如果您正在为 ANSI 和宽字符串编译代码,请_T()改用它,它会返回正确的字符串类型:

ilLoadImage(_T("back.bmp"));

如果您在后一种情况下并且不知道char在编译时需要什么类型的 s,请使用TCHAR,它是 aCHAR还是 aWCHAR取决于是否UNICODE定义。

于 2011-04-20T18:48:06.347 回答
1

如果您使用的是 Visual Studio,请尝试将项目更改为使用多字节字符集。

于 2011-04-20T18:40:46.140 回答