我正在使用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.szExeFile
是TCHAR[]
,取决于是否定义了wchar_t[]
,它可以是char[]
或UNICODE
。在您的情况下,它已定义,因此您需要:ProcessName
更改为宽字符串,然后使用wcscmp
进行比较。 _tcscmp()
,并根据ProcessName
确保UNICODE
是宽还是窄。 A
(例如Process32FirstA()
和Process32NextA()
)。