Probleme beim Linken mit Bloodsheed Dev C++ 4.9.9.2
-
Hi Leute
Ich bin noch ein relativ neu in C++ und ich habe ein Problem:
Wenn ich diesen Qellcode:
#include <iostream> #include <windows.h> #include <winbase.h> #include <cstdlib> using namespace std; BOOL WINAPI SetProcessShutdownParameters( DWORD = 100 ); int main() { SetProcessShutdownParameters(); int dummy = 1; while(dummy < 2) cout << "\a" ; return 0; }
compilieren will gibt es beim LInken einen fehler.
Ich hab hier mal das Compilier Log:
Compiler: Default compiler Führt g++.exe... aus g++.exe "C:\Dokumente und Einstellungen\Andreas Vetter\Eigene Dateien\C-Zeugz\Sources\PiepenBisZumEnde1.cpp" -o "C:\Dokumente und Einstellungen\Andreas Vetter\Eigene Dateien\C-Zeugz\Sources\PiepenBisZumEnde1.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib" C:\DOKUME~1\ANDREA~1\LOKALE~1\Temp/ccOcbaaa.o(.text+0x132):PiepenBisZumEnde1.cpp: undefined reference to `_Z28SetProcessShutdownParametersm@4' collect2: ld returned 1 exit status Ausführung beendet
Kann mir irgendjemand sagen was ich falsch mache?
Thx Gr4n@ttr
PS:Die Funktion
BOOL WINAPI SetProcessShutdownParameters( DWORD = 100 );
wird auf http://msdn2.microsoft.com/en-us/library/ms686227.aspx erklärt.
Da steht dass man eine Kernel32.lib Bibliothek braucht. Kann es sein das der Linker die nicht findet? Und wenn ja wie krieg ich die da rein?
-
irgendwo in den einstellungen gibt es linker flags, da musst du dann einfach -lKernel32 hinzufügen, dann linkt der die auch, sonst nicht. sowas geht bei C++ nich nicht automatisch. ("-l" steht dafür, das die library gelinkt werden soll, wenn er sie nicht findet, dann kannst du mit -L einen suchpfad hinzufügen, sollte aber eigentlich auch ohne klappen).
Auch das automatische linken der einzelnen .o dateien ist ein feature von dev C++, ohne muss man das alles manuell linken.ja und korrigiere mal deine einrückung.
-
und diese library sollte ich auf der platte haben?
-
jetzt zeigt er nur noch
cannot find -lobjc Id returned 1 exit status
an. wo finde ich dieses objc?
und wo muss das dann hin?
-
zur not suchs bei google und packs in dein Projektordner.