DevC++ Findet Referenzen nicht.
-
Hallo,
Ich habe gerade eine Funktion geschrieben, die mir sagt (true/false) ob ein bestimmter Prozess läuft oder nicht:
bool ProcessIsRunning() { // Get the process list snapshot... HANDLE hProcessSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0); PROCESSENTRY32 ProcessEntry = {0}; ProcessEntry.dwSize = sizeof(ProcessEntry); BOOL Return = FALSE; Return = Process32First (hProcessSnapShot, &ProcessEntry); if (!Return ) { return FALSE; } do { if (ProcessEntry.szExeFile == "bla.exe") { Return = true; break; } else { printf("%s\n", ProcessEntry.szExeFile); } } while (Process32Next (hProcessSnapShot, &ProcessEntry)); // close the handle CloseHandle(hProcessSnapShot); return Return; }
Um die Prozess-Klasse zu nutzen, benutze ich also die
#include <tlhelp32.h> // Process Management
Header-Datei.
Schön und gut, der Compiler spuckt mir jedoch immer wieder die folgende Fehlermeldung aus:
Dev-C++ schrieb:
[Linker error] undefined reference to `Process32First@8'
Dev-C++ schrieb:
[Linker error] undefined reference to `Process32Next@8'
Dev-C++ schrieb:
C:\work\DevC++\WinDis\Makefile.win
[Build Error] [WinDis.exe] Error 1Der Compile Log sieht folgendermassen aus:
Compile Log schrieb:
C:\work\DevC++\WinDis\Makefile.win
[Build Error] [WinDis.exe] Error 1Wo liegt der Hund begraben?
Gruss,
Peach_
-
Huch, der Compile Log wollte wohl nicht so ganz.
Hier nochmal der richtige Log:
Compile Log schrieb:
Compiler: Default compiler
Building Makefile: "C:\work\DevC++\WinDis\Makefile.win"
Executing make...
make.exe -f "C:\work\DevC++\WinDis\Makefile.win" all
g++.exe -c main.cpp -o main.o -I"L:/%Programme%/Dev/Dev-Cpp/include/c++" -I"L:/%Programme%/Dev/Dev-Cpp/include/c++/mingw32" -I"L:/%Programme%/Dev/Dev-Cpp/include/c++/backward" -I"L:/%Programme%/Dev/Dev-Cpp/include"g++.exe main.o -o "WinDis.exe" -L"L:/%Programme%/Dev/Dev-Cpp/lib" -L"C:/work/DevC++/lib" ../lib/libkernel32.lib ../lib/libkernel32.a
main.o(.text+0x65):main.cpp: undefined reference to
Process32First@8' main.o(.text+0xcc):main.cpp: undefined reference to
Process32Next@8'make.exe: *** [WinDis.exe] Error 1
Execution terminated
-
-
Liest dir mal in der C++-FAQ den beitrag zum Thema "undefined reference" durch - vermutlich hast du vergessen die Bibliothek mitzulinken, deren Header du da eingebunden hast.
-
Lies dir in der Compiler-FAQ mal den Beitrag zum Thema "Dev-C++" durch. Das Ding ist historisch.
-
-
Zu 1.
ich nehme an, du hast meinen Code oben, bzw. die Compilermeldung nicht wirklich angeschaut.
Darin include ich eine 'libkernel32.a' (die angeblich passend sein soll).
So wie ich das jetzt aber gesehen habe, brauche ich die kernel32.lib, und die finde ich nicht. - wo ist die?2. dann nehm ich doch mal wxDev.
PS: Bitte keine .NET Framework-Installation vorschlagen..
-
hmm...
Ich habe gerad die kernel32.lib aus dem SDK per Parameter Option einbezogen, und es funktioniert immer noch nicht..Hat jemand weitere Tipps?
-
Schreibe mal alle Header, die du includierst.
So wie das Forum aufgebaut ist, ist das hier nicht im optimalen Unterforum.
Es gehört in Rubriken, die Windows oder Microsoft als Schwerpunkt haben.
Hier mal ein Link zu dem gleichen Problem mit anderem Compiler:
http://www.tutorials.de/forum/c-c/187491-problem-mit-einbindung-von-kernel32-unter-microsoft-visual-c-toolkit-2003-a.htmlMfG f.-th.
-
#include <stdio.h> // Input Output (such as 'printf') #include <stdlib.h> // #include <windows.h> // General Win CMD's #include "winuser.h" // WinAPI #include <tlhelp32.h> // Process Management #pragma comment( lib, "kernel32.lib" )
[quote="Compile Log"]#include <stdio.h>#include <stdio.h> // Input Output (such as 'printf')
#include <stdlib.h> //
#include <windows.h> // General Win CMD's
#include "winuser.h" // WinAPI
#include <tlhelp32.h> // Process Management#pragma comment( lib, "kernel32.lib" )quote]
so sieht das ganze bisher aus..
immer noch die gleiche Fehlermeldung.
-
Ich kenne nicht jeden Compiler -
warum steht die eine Header-Datei in "winuser.h" in Anführungszeichen und nicht wie die anderen Header in <header.h>, gehört die nicht zu deinem Compiler oder hast du die in ein anderes Verzeichnis verschoben?MfG f.-th.
-
noch was vergessen -
dein DEV kennt sich meiner Erinnerung nach auch nicht mit#pragma comment( lib, "kernel32.lib" )
aus.
Das musst du dem anders beibringen oder einen andere Compiler nehmen.Dann hau mal in die Tasten
f.-th.