在C ++中使用DevIL和OpenGL加载图像

时间:2011-04-20 18:25:24

标签: c++ opengl image-processing devil

正如标题所示,我在尝试使用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,谷歌让我困惑,我只会问我必须做什么它工作:为什么它不工作?我错过了什么?我相信,必须有一个非常短的解决方案。它看起来就像是那种错误。

谢谢。

2 个答案:

答案 0 :(得分:4)

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

ilLoadImage(L"back.bmp");

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

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

如果你处于后一种情况并且不知道在编译时你需要什么类型的char,请使用TCHARCHARWCHAR取决于是否定义了UNICODE

答案 1 :(得分:0)

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