本帖最后由 geleisisisi 于 2022-3-14 09:08 编辑
最近想做一个修改器,所以用了visual studio 2022 community 版本里面自带的MFC模版。
为了不和自动生成的文件混肴,我新建了一个类,取名为Editor。然后在这个类里面写各种各样的函数,最后在Dlg.cpp文件里调用这些函数。
然后我就遇到了一个非常奇葩的问题,那就是include究竟应该写在Editor.cpp里还是Editor.h里?
通常情况下,我都是写在.cpp里。
然后我就在Editor.cpp里写了这样一个函数,用来获取模块信息:
[C++] 纯文本查看 复制代码 MODULEENTRY32 GetModuleBaseInfo(CString szModuleName, DWORD dwPid) {
HANDLE hModuleTool = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, dwPid);
MODULEENTRY32 me32 = { 0 };
if (hModuleTool == INVALID_HANDLE_VALUE) return me32;//获取模块句柄失败
me32.dwSize = sizeof(MODULEENTRY32);
BOOL bRet = Module32First(hModuleTool, &me32);
if (bRet) {
while (bRet)
{
if (wcscmp(me32.szModule, szModuleName) == 0 || wcscmp(me32.szExePath, szModuleName) == 0) {
return me32;
}
bRet = Module32Next(hModuleTool, &me32);
}
}
return me32;
}
为了使用这个函数,我在Editor.cpp的最上方,加了#include <TlHelp32.h>
接着,我去Editor.h里,声明了该函数
[C++] 纯文本查看 复制代码 MODULEENTRY32 GetModuleBaseInfo(CString szModuleName, DWORD dwPid);
然后就报错了
除非我在Editor.h的最上方同样加上#include <TlHelp32.h>,它就立马不报错了
我现在就特迷惘,include究竟应该写在Editor.cpp里还是Editor.h里?
求大佬指点一下迷津
===========
头脑晕了,有些地方写错了,重新编辑了下 |