error LNK2019: Verweis auf nicht aufgelöstes externes Symbol
-
Hallo! Ich versuche gerade mir eine kleine klasse zum Speicher lesen zu basteln allerdings bekomme ich immer diese beiden Fehler und finde einfach nicht woran es liegen könnte.
Fehler 1 error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: unsigned int __thiscall memory::readmemory<unsigned int>(unsigned long)" (??$readmemory@I@memory@@QAEIK@Z)" in Funktion "_main". C:\Users\klucky\Documents\Visual Studio 2010\Projects\memmory\memory\main.obj healbot
Fehler 2 error LNK1120: 1 nicht aufgelöste externe Verweise. C:\Users\klucky\Documents\Visual Studio 2010\Projects\memory\Debug\memory.exe 1 1 memorymemory.h
#pragma once #include "types.h" #include "windows.h" #include <string> class memory { public: memory(DWORD PID); ~memory(void); template <typename T> T readmemory(DWORD ADDRESS); private: DWORD pid; HANDLE handle; };
memory.cpp
#pragma once #include "memory.h" #include "types.h" #include <string> #include "windows.h" memory::memory(DWORD PID) { pid = PID; handle = OpenProcess(PROCESS_ALL_ACCESS, false, pid); } memory::~memory(void) { CloseHandle(handle); } template <typename T> T memory::readmemory(DWORD ADDRESS) { T value; ReadProcessMemory(handle, (void*)ADDRESS, &value, sizeof(T), NULL); return value; }
main.cpp
#pragma once #include <iostream> #include <conio.h> #include "types.h" #include "memory.h" void main() { char Caption[] = "notepad"; DWORD PROC_ID; GetWindowThreadProcessId(FindWindow(NULL, (LPCTSTR)Caption), &PROC_ID); memory notepad(PROC_ID); std::cout << notepad.getpid(); DWORD add = 0x10; std::cout << notepad.readmemory<UINT>(add); _getch(); }
das ganze läuft wenn ich die Zeile std::cout << notepad.readmemory<UINT>(add); auskommentiere. Wenn sie da ist bekomm ich die oben genannten errors aber ich kann mir nicht erklären warum. Ich hoffe dass mir vielleicht jemand von euch helfen kann.
MFG Klucky
-
Du kannst ein template nicht in cpp und Header aufteilen. Zur Compile-Zeit müssen alle Teile und Funktionen des Templates bekannt sein.
-
Danke schonmal für deine Antwort!
Mhh also muss ich template funktion direkt bei der klassendeklaration mitdefnineren? oder ist das was ich hier versuche sowiso nicht der weg den man normalerweise geht?