Загрузка изображения с использованием DevIL и OpenGL в C ++ - PullRequest
2 голосов
/ 20 апреля 2011

Как видно из названия, я пытаюсь загрузить изображение с помощью 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, из-за чего меня запутал Google, и я буду только спрашивать, что я должен сделать это работает: почему это не работает? Что я пропустил? Я уверен, что для этого должно быть очень короткое решение. Это просто похоже на такую ​​ошибку.

Спасибо.

Ответы [ 2 ]

4 голосов
/ 20 апреля 2011

Если вы используете функции Unicode, вы должны использовать текст Unicode. В частности, L вернет широкое символьное представление статического текста:

ilLoadImage(L"back.bmp");

Если вы компилируете код как для ANSI, так и для широких строк, вместо этого используйте _T(), что возвращает правильный тип строки:

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

Если вы в последнем случае и не знаете, какие типы char s вам понадобятся во время компиляции, используйте TCHAR, то есть CHAR или WCHAR в зависимости от определен ли UNICODE.

0 голосов
/ 20 апреля 2011

Если вы используете Visual Studio, попробуйте изменить проект для использования многобайтовой кодировки.

...