5

当我尝试编译我的项目时,我遇到了一些我无法解决的错误。无论如何,这是代码之一:

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

AWindows API 的许多“函数”实际上是函数的 ANSI ( ) 或 Unicode ( forwide W) 版本的宏。根据您的项目设置,这些宏将是DoSomeFunctionA或者DoSomeFunctionW当您想要调用DoSomeFunction. 然后使用可移植的方式,TCHAR因为它被定义char为 ANSI 和wchar_tUnicode。

如果您不想使用 Unicode 进行编译,可以将项目设置更改为Project Properties -> Configuration Properties -> General -> Character Set -> Use Multibyte Character Set.

如果您确实想使用 Unicode 进行编译,那么您应该在必要的函数名称后附加一个A(例如:)。GetModuleFileNameA

于 2012-03-17T22:12:39.293 回答