Hello :)
Je suis en train de me faire un bibliothèque avec des class histoire de me simplifier la vie pour après et je me prend l'erreur LNK2019. J'ai cherché et il semblerait que ça soit un problème de "link" mais je n'ai pas trouvé la solution pour autant :/
Voici mes différents fichiers:
Et voici donc le fameux message d'erreur, LNK2019.
Lorsque j'utilise la fonction running de la class process par exemple, je n'ai pas de soucis. En revanche avec les fonction GetProcessID et GetProcessHandle, j'ai le problème, même si je les utilisent à l’intérieur de la class.
Je bloque là-dessus depuis hier et là j'ai plus trop d'idées. Si vous avez déjà rencontré cette erreur, je veux bien
Merci d'avance ;)
Je suis en train de me faire un bibliothèque avec des class histoire de me simplifier la vie pour après et je me prend l'erreur LNK2019. J'ai cherché et il semblerait que ça soit un problème de "link" mais je n'ai pas trouvé la solution pour autant :/
Voici mes différents fichiers:
Code:
#include <Windows.h>
#include <iostream>
#include "process.h"
using namespace std;
/* ===== Declaration ===== */
const string process::name = "hl2.exe"; // Define process name
int main()
{
process hl2;
cout << "Wait process : " << hl2.name << endl;
cout << hex << hl2.GetProcessID() << endl;
while (!hl2.running())
Sleep(1000);
system("PAUSE");
return 0;
}
Code:
#ifndef PROCESS_H_INCLUDED
#define PROCESS_H_INCLUDED
#include <Windows.h>
#include <string>
class process
{
public:
// Attributs
static const std::string name;
// Methods
bool running(const char* name = name.c_str()); // Check process running
static int GetProcessID(char* ProcessName = (char*)name.c_str()); // Process ID
HANDLE GetProcessHandle(int ProcessID = GetProcessID()); // Process Handle
private:
//Attributs
};
#endif // PROCESS_H_INCLUDED
Code:
#include "process.h"
#include <TlHelp32.h> // Usefull for ProcessRunning()
bool process::running(const char* name) // Check process running (0 = Not running, 1 = Running)
{
HANDLE SnapShot = CreateToolhelp32Snapshot(0x00000002, 0);
if (SnapShot == INVALID_HANDLE_VALUE)
return false;
PROCESSENTRY32 procEntry;
procEntry.dwSize = sizeof(PROCESSENTRY32);
if (!Process32First(SnapShot, &procEntry))
return false;
do
{
if (strcmp(procEntry.szExeFile, name) == 0)
return true;
} while (Process32Next(SnapShot, &procEntry));
return false;
}
int GetProcessID(char* ProcessName) // Get ID of process
{
PROCESSENTRY32 pe32;
HANDLE hprocess = NULL;
pe32.dwSize = sizeof(PROCESSENTRY32);
hprocess = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (Process32First(hprocess, &pe32))
{
do
{
if (strcmp(pe32.szExeFile, ProcessName) == 0)
break;
} while (Process32Next(hprocess, &pe32));
}
if (hprocess != INVALID_HANDLE_VALUE)
CloseHandle(hprocess);
return pe32.th32ProcessID;
}
HANDLE GetProcessHandle(int ProcessID) // Get Handle of process
{
HANDLE result = OpenProcess(PROCESS_ALL_ACCESS, FALSE, ProcessID);
CloseHandle(result);
return result;
}
Code:
1>main.obj : error LNK2019: unresolved external symbol "public: static int __cdecl process::GetProcessID(char *)" (?GetProcessID@process@@SAHPAD@Z) referenced in function _main
Lorsque j'utilise la fonction running de la class process par exemple, je n'ai pas de soucis. En revanche avec les fonction GetProcessID et GetProcessHandle, j'ai le problème, même si je les utilisent à l’intérieur de la class.
Je bloque là-dessus depuis hier et là j'ai plus trop d'idées. Si vous avez déjà rencontré cette erreur, je veux bien
Merci d'avance ;)