C ++中类型错误的争论

时间:2014-12-09 01:16:00

标签: c++ winapi visual-c++

我正在使用Visual Studio 2013.错误显示"类型" WCHAR *"的参数与#34; 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);
}

错误发生在以下行。在我的想法上,它是在&#34; pe32&#34;

          if (!strcmp(pe32.szExeFile, ProcessName))

1 个答案:

答案 0 :(得分:4)

strcmp的签名是

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

pe32.szExeFileTCHAR[]wchar_t[]char[]取决于UNICODE是否已定义。在您的情况下,它已定义,因此您需要:

  1. ProcessName更改为宽字符串,并使用wcscmp进行比较。

  2. 使用_tcscmp(),并根据ProcessName确保UNICODE宽或窄。

  3. 使用API​​的ANSI版本,其名称后附加一个大写A(例如Process32FirstA()Process32NextA())。