c++ - 无法将 char[9] 转换为 char*
问题描述
我是游戏黑客的新手,并从一个给我源代码的教程开始。一旦我理解了它的作用,我就尝试编译,结果出现了 3 个相同的错误:
无法将 char[9] 转换为 char*(错误 n. C2664)
误差是指变量ProcessName
和ModuleName
。
即使我知道良好的 C++ 基础知识,我也总是在使用指针方面遇到困难。
对错误感兴趣的函数是这些 2:
bool AttachProcess(char *ProcessName) {
HANDLE hPID = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
PROCESSENTRY32 procEntry;
procEntry.dwSize = sizeof(procEntry);
const WCHAR* procNameChar;
int nChars = MultiByteToWideChar(CP_ACP, 0, ProcessName, -1, NULL, 0);
procNameChar = new WCHAR[nChars];
MultiByteToWideChar(CP_ACP, 0, ProcessName, -1, (LPWSTR)procNameChar, nChars);
do
if (!wcscmp(procEntry.szExeFile, procNameChar))
{
this->dwPID = procEntry.th32ProcessID;
CloseHandle(hPID);
this->hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, this->dwPID);
return true;
}
while (Process32Next(hPID, &procEntry));
CloseHandle(hPID);
return false;
}
MODULEENTRY32 GetModule(char* ModuleName)
{
HANDLE hModule = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPID);
MODULEENTRY32 mEntry;
mEntry.dwSize = sizeof(mEntry);
const WCHAR* modNameChar;
int nChars = MultiByteToWideChar(CP_ACP, 0, ModuleName, -1, NULL, 0);
modNameChar = new WCHAR[nChars];
MultiByteToWideChar(CP_ACP, 0, ModuleName, -1, (LPWSTR)modNameChar, nChars);
do
if (!wcscmp(mEntry.szModule, modNameChar))
{
CloseHandle(hModule);
return mEntry;
}
while (Module32Next(hModule, &mEntry));
CloseHandle(hModule);
mEntry.modBaseAddr = 0x0;
return mEntry;
}
我在这里回忆起这些功能:
MemoryManager()
{
this->hProcess = NULL;
this->dwPID = NULL;
try {
if (!AttachProcess("csgo.exe")) throw 1;
this->ClientDLL = GetModule("client.dll");
this->EngineDLL = GetModule("engine.dll");
//and so on
解决方案
发生错误是因为您试图将字符串文字 (a const char[]
) 传递给需要指向非 const char 数组 ( char *
) 的指针的函数。
因为你从不修改ProcessName
你应该改变的内容
bool AttachProcess(char *ProcessName)
至
// VVVVV
bool AttachProcess(const char *ProcessName)
推荐阅读
- c++ - 在 Mac OS 中移动第三方窗口
- reactjs - 如何在 Reactjs 的同一页面中显示提交的表单数据?
- angular - 基于行跨度对数据进行分组后行的角度primeng p表选择
- php - 我不知道这段代码有什么错误
- python - 包中的覆盖函数
- c++ - 如何从长指针中提取 little-endian unsigned short?
- objective-c - 如何获取当前激活的视图?
- php - 无法更新数据并存储在数据库中
- java - 在 jmeter beanshell 代码中使用 List 时在 Jmeter 中遇到“=”错误
- android - 如何显示对话框以确认用户希望退出活动?