5

プロジェクトをコンパイルしようとしたときに、解決できないエラーが発生しました.. とにかく、これはコードの1つです:

public:
void Init(HMODULE hModule, string Filename)
{
    char szLoc[ MAX_PATH ];
    GetModuleFileName(hModule, szLoc, sizeof( szLoc ) );
    char* dwLetterAddress = strrchr( szLoc, '\\' );
    *( dwLetterAddress + 1 ) = 0;
    strcat( szLoc, Filename.c_str() );
    __OutStream.open( szLoc, ios::app);
}

エラーは次のとおりです。

error C2664: 'GetModuleFileNameW' : cannot convert parameter 2 from 'char [260]' to 'LPWCH'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style  cast or function-style cast

助けてくれてありがとう..よろしく、メッサー

4

1 に答える 1

6

Windows API の多くの「関数」は、実際には関数の ANSI ( A) または Unicode (Wワイド) バージョンのマクロです。プロジェクトの設定に応じて、これらのマクロは、またはを呼び出す必要がある場合のいずれDoSomeFunctionAかになります。ANSIおよびUnicode用に定義されているため、移植可能な方法は使用することです。DoSomeFunctionWDoSomeFunctionTCHARcharwchar_t

Unicode でコンパイルしたくない場合は、プロジェクト設定をProject Properties -> Configuration Properties -> General -> Character Set -> Use Multibyte Character Set.

Unicode でコンパイルしたい場合は、必要な関数名にA(ex: ) を追加する必要があります。GetModuleFileNameA

于 2012-03-17T22:12:39.293 に答える