我很努力去理解爲什麼這個符號沒有定義,儘管它在main.cpp中定義。代碼是如下:創建類時已經定義了無法解析的外部符號
內存類:
#pragma once
#include "CrownIncludes.h"
class Memory {
public:
template<typename T>
inline T Read(std::uintptr_t ptrAddress) const
{
T val = T();
ReadProcessMemory(procHandle, (LPCVOID)ptrAddress, &val, sizeof(T), NULL);
return val;
}
private:
HANDLE procHandle = Settings::pHandle;
};
CrownIncludes.h
#pragma once
#include <Windows.h>
#include <TlHelp32.h>
#include <Psapi.h>
#include <iostream>
#include "Global.h"
using namespace Global;
#include "Crown.h"
#include "Memory.h"
Crown.cpp:
#include "CrownIncludes.h"
//#include "Memory.h"
void Crown::Setup() {
std::cout << "Crown loading..." << std::endl;
Memory* MemoryManager = new Memory();
DWORD LocalPlayer = 0x0;
MemoryManager->Read(0x02C8 + 0x0390, LocalPlayer);
std::cout << LocalPlayer << std::endl;
}
Main.cpp的:
...
std::cout << "Success! (" << TargetProcess->GetHandle() << ")" << std::endl;
HANDLE pHandle = TargetProcess->GetHandle();
// Main
Crown::Setup();
...
錯誤:
Fehler LNK2001 Nicht aufgelöstes externes Symbol ""void * Global::Settings::pHandle" ([email protected]@[email protected]@3PEAXEA)" Crown.obj
當在取消存儲器*的MemoryManager =新存儲器();代碼工程雖然。 (所以我猜內存類無法找到pHandle)