Einbinden von Bibliotheken in Microsoft Visual C++ 2010 express



  • Ich wollte Die SDL2-Library in ein einfaches C++ Projekt einfügen
    Hier der Code von der sdl.cpp:

    #include<SDL.h>
    #include<iostream>
    using namespace std;
    
    int main()
    {
          cout<<"Hallo";
          return 0;
    }
    

    Und Die Fehlermeldung:

    Ausgabe"Erstllen":

    1> sdl.cpp
    1> LINK : C:[Mein Dateipfad des Projektes]\sdl\Debug\sdl.exe wurde nicht gefunden oder beim letzten inkrementellen Linkvorgang nicht erstellt; vollständiger Link wird durchgeführt.
    1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_SDL_main" in Funktion "_main_utf8".
    1>C:[Mein Dateipfad des Projektes]\sdl\Debug\sdl.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

    Ausgabe"Debuggen":

    "sdl.exe": "C:[Mein Dateipfad des Projektes]\sdl\Debug\sdl.exe" geladen, Symbole wurden geladen.
    "sdl.exe": "C:\Windows\SysWOW64\ntdll.dll" geladen, Cannot find or open the PDB file
    "sdl.exe": "C:\Windows\SysWOW64\kernel32.dll" geladen, Cannot find or open the PDB file
    "sdl.exe": "C:\Windows\SysWOW64\KernelBase.dll" geladen, Cannot find or open the PDB file
    "sdl.exe": "C:\Windows\SysWOW64\msvcr100d.dll" geladen, Symbole wurden geladen.
    Der Thread 'Win32-Thread' (0x2304) hat mit Code 0 (0x0) geendet.
    Der Thread 'Win32-Thread' (0x34a8) hat mit Code 0 (0x0) geendet.
    Das Programm "[7976] sdl.exe: Systemeigen" wurde mit Code 0 (0x0) beendet.

    Ausgabe"Buildreihenfolge":

    siehe: Ausgabe "Erstellen"

    Ich habe bei Projekt\Eigenschaften\Konfigurationseigenschaften\VC++-Verzeichnisse\Includeverzeichnisse den include-Ordner von SDL2 verlinkt
    und bei Projekt\Eigenschaften\Konfigurationseigenschaften\VC++-Verzeichnisse\Bibilotheksverzeichnisse den lib\x86-Ordner von SDL2 verlinkt.
    Außerdem habe ich bei Projekt\Eigenschaften\Konfigurationseigenschaften\Linker\Eingabe\Zusätzliche Abhängigkeiten SDL2.lib und SDL2main.lib in das Fenster geschrieben.

    (Das Projekt ist als leeres Projekt erstellt worden)

    (Mir ist klar das ich die SDL-Library für dieses Projekt nicht brauche wollte sie aber für zukünftige Projekte installieren.)



  • Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Weiß nicht, was SDL ist, jedoch bin ich von den Systemen welche die SDL unterstützen stark beeindruckt 😃 .
    Hier ein auszug aus der SDL_main.h:
    107 /**

    108 * The prototype for the application's main() function

    109 */

    110 extern C_LINKAGE int SDL_main(int argc, char *argv[]);

    Wenn du gegen die SDL_main.lib linkst, musst du auch eine SDL_main definieren.
    Einfach irgendwo:

    extern "C" { int SDL_main(int argc, char* argv[]) {}}
    

    schreiben, das ist ab dann deine neue main, die alte brauchst dann auch nicht mehr.



  • Danke,aber mir fehlt jetzt eine Headerdatei,Mein neuer Code:

    #include<SDL.h>
    #include<iostream>
    using namespace std;
    
    extern "C" {int SDL_main(int argc, char* argv[]){}}
    {
          cout<<"Hallo";
          return 0;
    }
    

    Fehlermeldung:
    1> sdl.cpp
    1>c:[Mein Dateipfad des Projektes]\sdl\sdl\sdl.cpp(6): error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
    Ich habe die SDL2.dll aber in den Ordner c:[Mein Dateipfad des Projektes]\sdl\sdl\ Kopiert
    und den include Ordner mit den ganzen Headerdateien wiegesagt verlinkt



  • Ähem... Schau dir deinen Code nochmal ganz genau an...



  • Danke mein neuer Code:

    #include<SDL.h>
    #include<iostream>
    using namespace std;
    
    extern"C"{int SDL_main(int argc,char* argv[]) 
    {   
    	  cout<<"Hallo";
          return 0;
    }}
    

Log in to reply