SQLite3 in C++ Project einbinden



  • Es hört sich jetzt vielleicht blöd an, aber ich bekomme SQLite nicht in mein Projekt eingebunden. Undzwar weil ich keine .lib mitgeliefert bekomme, alles was ich auf http://www.sqlite.org/download.html bekomme ist der header und die .dll aber nicht die .lib Schlussfolgernd kommt natürlich ein Linker-Fehler, füg ich aber anstat der .lib die .dll, in den Projekt Einstellungen ein (Visual Studio 10)
    Kommt der Fehler "error LNK1107: Ungültige oder beschädigte Datei: Lesen bei 0x470 nicht möglich."

    Also was machen?



  • Das ist schon Jahre so bei SQLite. Weiß auch nicht warum die das machen. 😡 Aber die SQLite Typen haben eh eine Aversion gegen MS-Windows. Machen die bestimmt mit Absicht.

    Es gibt aber Möglichkeiten aus einer DLL eine Lib zu erzeugen:

    http://adrianhenke.wordpress.com/2008/12/05/create-lib-file-from-dll/

    Ich habe ehrlich gesagt damals einfach den kompletten Sourcecode eingebunden, und gut ist. 😃



  • Danke nun hab ich die lib. die def Datei war bei der dll schon dabei, hat glaub ich einiges an arbeit gespart.

    Leider kommen immer noch Linker fehler, obwohl ich die lib in den Projekt eingebunden hab.

    Kann sich jemand vorstellen warum?

    ich habe nur folgendem beispiel code eingefügt:

    //Als erstes legen wir einen sqlite3-Zeiger an
    				 sqlite3* Database;
    				 // und instantiieren ein Objekt von string auf dem Stack
    				 string Path;
    
    				 // Danach fragen wir den Benutzer nach dem Pfad zur Datenbankdatei
    
    				 // Nun können wir die Datenbank öffnen!
    				 if(sqlite3_open("\\Datenbank\\Daten.db", &Database) != SQLITE_OK)
    				 {
    					 // Es ist ein Fehler aufgetreten! sqlite3_errmsg(Database)
    					 MessageBox::Show("Fehler beim Öffnen der Datenbank","Fehler beim Öffnen", MessageBoxButtons::OK,MessageBoxIcon::Error);
    
    				 }
    
    				 // Jetzt können wir die Datenbank wieder schließen
    				 sqlite3_close(Database);
    

    Habe nur anstat dem cout, für fehler eine MessageBox gemacht, da es eine Windows Forms Anwendung ist.

    //Edit: Hat sich erledigt, funktionierte nach Neustart... Danke 🙂


Log in to reply