【发布时间】:2021-08-06 00:24:08
【问题描述】:
这是一些CSGO代码的一部分,我不知道如何解决这个问题;它位于如下所示的 sn-p 的第 8 行:
uintptr_t GetModuleBaseAddress(const char* modName) {
HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, procId);
if (hSnap != INVALID_HANDLE_VALUE) {
MODULEENTRY32 modEntry;
modEntry.dwSize = sizeof(modEntry);
if (Module32First(hSnap, &modEntry)) {
do {
if (!strcmp(modEntry.szModule, modName)) {
CloseHandle(hSnap);
return (uintptr_t)modEntry.modBaseAddr;
}
} while (Module32Next(hSnap, &modEntry));
}
}
}
错误信息:
Argument Type (WCHAR*) is incompatible with parameter of type "const char*)
【问题讨论】:
-
将项目设置更改为多字节而不是 unicode。
-
阅读
TCHAR并使用相应功能;_tcscmp,就你而言。 -
@zdf 但是整个函数(甚至代码库)都必须更改。请注意,给定函数采用
const char*参数。 -
TCHAR不是首选方式,十多年来一直没有。不需要再支持Win98了。 -
@DavidHeffernan 我认为
TCHAR用于在比 Windows 98 更新的操作系统上运行的许多实际应用程序中。但我的意思是真正解决评论由 zdf 制作。