"char *" 类型的实参与 "LPWSTR" 类型的形参不兼容
VS2015,一个查找程序DLL句柄的函数,网上抄的,大致如下:
char szModName[MAX_PATH];
HMODULE hMods[256];
DWORD cbNeeded;
EnumProcessModules(进程句柄, hMods, sizeof(hMods), &cbNeeded);
for (i = 0; i < (cbNeeded / sizeof(HMODULE)); i++)
{
if (GetModuleFileNameEx(进程句柄, hMods[i], szModName, sizeof(szModName)))
{
if (strstr(szModName, XXX.dll))
{
return hMods[i];
}
}
}
一.Debug模式下生成不报错,EXE运行正常,可以获取句柄
二.Release模式下生成报错:
1.“DWORD K32GetModuleFileNameExW(HANDLE,HMODULE,LPWSTR,DWORD)”: 无法将参数 3 从“char [260]”转换为“LPWSTR”
2."char *" 类型的实参与 "LPWSTR" 类型的形参不兼容
三.尝试:
1.将参数3强制转换为LPWSTR,可以生成,但是程序运行获取不了句柄.
2.把char szModName[MAX_PATH];改成TCHAR或者wchar_t类型的话.后面那句strstr(szModName, XXX.dll)报错C2665 “strstr”: 2 个重载中没有一个可以转换所有参数类型
新手已经头都大了,求大神支招,感激不尽!