我正在使用Visual Studio2013。错误显示“类型为“WCHAR *”的参数与类型为“const char *”的参数不兼容。

while (!processId)
{
    system("CLS");
    cout << "Searching for game" << ProcessName << "..." << endl;
    cout << "Make sure your game is running" << endl;
    hProcSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

    if (Process32First(hProcSnap, &pe32))
    {
        do
        {
            if (!strcmp(pe32.szExeFile, ProcessName))
            {
                processId = pe32.th32ProcessID;
                break;
            }
        } while (Process32Next(hProcSnap, &pe32));
    }
    Sleep(1000);
}

错误在下一行。我的想法是在“pe32”上

最佳答案

strcmp的签名是

int strcmp ( const char * str1, const char * str2 );

pe32.szExeFileTCHAR[],取决于是否定义了wchar_t[],它可以是char[]UNICODE。在您的情况下,它已定义,因此您需要:
  • ProcessName更改为宽字符串,然后使用wcscmp进行比较。
  • 使用_tcscmp(),并根据ProcessName确保UNICODE是宽还是窄。
  • 使用API​​的ANSI版本,其名称后附加了一个大写的A(例如Process32FirstA()Process32NextA())。
  • 10-04 22:01