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.


Anmelden zum Antworten