+-
c – ‘WCHAR *类型的参数与“const char *”不兼容
DWORD ProcMem::Module(LPSTR ModuleName){


HANDLE hModule = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
MODULEENTRY32 mEntry;
mEntry.dwSize = sizeof(mEntry); 

do
    if (!strcmp(mEntry.szModule, ModuleName))
    {
    CloseHandle(hModule);
    return (DWORD)mEntry.modBaseAddr;
    }
while (Module32Next(hModule, &mEntry));

cout << "\nMODULE: Process Platform Invalid\n";
return 0;
 }

WCHAR *类型的参数与“const char *”不兼容.
把光标放在mEntry上.

最佳答案
您的项目是在启用Unicode的情况下编译的,因此CreateToolhelp32Snapshot()映射到CreateToolhelp32SnapshotW(),PROCESSENTRY32映射到PROCESSENTRY32W,Process32Next()映射到Process32NextW().因此,ProcEntry.szExeFile字段是WCHAR []数组.

您正在将szExeFile传递给strcmp(),它不支持wchar_t *字符串,只支持char *字符串.你需要:

>使用WideCharToMultiByte()将szExeFile转换为char []数组,以便将其传递给strcmp().
>将ProcessName参数更改为wchar_t *,或使用MultiByteToWideChar()将ProcessName转换为wchar_t []数组,并将其传递给wcscmp()或lstrcmpW()而不是strcmp().
>如果要继续使用基于TCHAR的API,请将ProcessName参数更改为LPTSTR,然后使用_tcscmp()或lstrcmp()而不是strcmp().

点击查看更多相关文章

转载注明原文:c – ‘WCHAR *类型的参数与“const char *”不兼容 - 乐贴网