Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中使用DevIL和OpenGL加载图像+;_C++_Opengl_Image Processing_Devil - Fatal编程技术网

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

C++ 在C+中使用DevIL和OpenGL加载图像+;,c++,opengl,image-processing,devil,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

正如标题所示,我正在尝试使用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 *'
error C2664: 'ilLoadImage' : cannot convert parameter 1 from 'const char *' to 'const wchar_t *'
如果我将
filename
定义为
const wchar\u t*filename
,我会得到错误

error C2664: 'ilLoadImage' : cannot convert parameter 1 from 'const char *' to 'const wchar_t *'
error C2664: 'ilLoadImage' : cannot convert parameter 1 from 'const char *' to 'const wchar_t *'
所以现在我不会让你厌烦我的好奇心,为什么[filename].bmp文件的类型是wchar\u t*,或者wchar\u t是什么,谷歌把我弄糊涂了,我只想问我必须做什么才能让它工作:为什么它不工作?我错过了什么?我相信,一定有一个非常简短的解决办法。看起来就是那种错误


谢谢。

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

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

ilLoadImage(L"back.bmp");
如果同时编译ANSI和wide字符串的代码,请改用
\u T()
,它将返回正确类型的字符串:

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

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

消除了错误,但是现在我收到了大量的链接器错误,这些错误可能与我在项目中的混乱有关,也可能与我无关。除非我遗漏了什么,否则我所有的依赖项都是正常的,我的文件应该在哪里…没有意义…那么你应该打开另一个问题,详细错误。DevIL有两套库,一套兼容unicode,另一套不兼容。确保你用的是正确的。如果将项目设置为多字节,则使用unicode不兼容的项目