gpt4 book ai didi

c++ - 'WCHAR* 类型的参数与 "const char*"不兼容'

转载 作者:行者123 更新时间:2023-11-30 02:34:50 29 4
gpt4 key购买 nike

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 映射到 PROCESSENTRY32WProcess32Next() 映射到 Process32NextW()。因此,ProcEntry.szExeFile 字段是一个 WCHAR[] 数组。

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

  1. 使用 WideCharToMultiByte()szExeFile 转换为 char[] 数组,这样您就可以将其传递给 strcmp().

  2. 将您的 ProcessName 参数更改为 wchar_t*,或使用 MultiByteToWideChar() 转换 ProcessNamewchar_t[] 数组,并将其传递给 wcscmp()lstrcmpW() 而不是 strcmp().

  3. 如果您想继续使用基于 TCHAR 的 API,请将您的 ProcessName 参数更改为 LPTSTR,然后使用 _tcscmp()lstrcmp() 而不是 strcmp()

关于c++ - 'WCHAR* 类型的参数与 "const char*"不兼容',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34276789/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com