"char *" 类型的实参与 "LPWSTR" 类型的形参不兼容

qq_37015187 qq_37015187 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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 个重载中没有一个可以转换所有参数类型

新手已经头都大了,求大神支招,感激不尽!
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
qq_37015187
C++ 语言 65,214 成员 250,514 内容