2

タイトルが示すように、OpenGL に渡す前に、DevIL を使用して画像を読み込もうとしています。このコードをエラー制御として使用しています

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 が私を混乱させた理由についての私の好奇心であなたを飽きさせません。なぜ機能しないのですか?私は何を逃したのですか?これには非常に短い解決策が必要です、私は確信しています。そういうエラーにしか見えない。

ありがとうございました。

4

2 に答える 2

4

Unicode 関数を使用する場合は、Unicode テキストを使用する必要があります。具体的にLは、静的テキストのワイド char 表現を返します。

ilLoadImage(L"back.bmp");

ANSI とワイド文字列の両方のコードをコンパイルしている場合は、_T()代わりに使用してください。これは、正しい型の文字列を返します。

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

char後者の場合で、コンパイル時に必要な s のタイプがわからない場合は、をTCHAR使用します。CHARWCHARUNICODE

于 2011-04-20T18:48:06.347 に答える
1

Visual Studioを使用している場合は、マルチバイト文字セットを使用するようにプロジェクトを変更してみてください。

于 2011-04-20T18:40:46.140 に答える