sqlite3 lässt sich nicht öffnen



  • Hallo.
    Ich bin echt am verzweifeln. Ich bekomme es einfach nicht hin, mit C++ eine Sqlite3 DB zu "verarbeitet".
    Hab mir auch die Doku durchgelesen aber mir tauchen ständig 10000 Fehler auf.

    Nun möchte ich erstmal, klein anfangen und eine DB (fester Pfad) öffnen. Aber selbst das bekomme ich nicht hin.

    Hier mal mein Code:

    sqlite3 *db;
    #include "stdafx.h"
    #include <iostream>
    #include <conio.h>
    #include <sqlite3.h>
    using namespace std;
    
    int main()
    {
    	cout << "Es wird versucht, die DB zu oeffnen:";
    
    	int TryToOpen = sqlite3_open( "C:\testdb.sqlite", NULL);
    
    	if (TryToOpen == 1)
    	{
    		cout << "Es hat geklappt";	
    	}
    	else
    	{
    		cout << "Es hat leider nicht geklappt";
    
    	}	
    
    	getch(); //Damit das Fenster sich nicht gleich schließt!
    
    }
    

    Es kommen folgende Fehlermeldungen:

    Error 2 error LNK2019: unresolved external symbol _sqlite3_open referenced in function _main
    Error 3 fatal error LNK1120: 1 unresolved externals

    Wird wahrscheinlich irgendwie and er Zeile liegen, wo ich versuche das DB zu öffnen.
    Die NULL hab ich da hingeschrieben, weil er ja noch ncihts machen soll sondern einfach versuchen zu öffnen.

    Bin für jede Hilfe dankbar.



  • Du musst die Bibliothek auch dazulinken.
    Außerdem ist \ ein Escapezeichen und muss deswegen als \\ geschrieben werden (oder einfach / benutzen).



  • Du musst die Bibliothek auch dazulinken.

    Welche? Habe doch sqlite3.h includiert oder was genau meinst du?

    Ps.
    Backslashzeichen hab ich umgeändert.



  • sqlite3.h ist nur die Headerdatei, worin sämtliche für den Benutzer interessante Funktionsdeklarationen enthalten sind.
    Du musst noch die Bibliothek selbst dazulinken, die Endung ist je nach Format .lib, .obj oder .a.

    Siehe auch
    http://de.wikipedia.org/wiki/Linker_(Computerprogramm)



  • biltox schrieb:

    Du musst die Bibliothek auch dazulinken.

    Welche? Habe doch sqlite3.h includiert oder was genau meinst du?

    Einen Header includieren ist nicht eine Bibliothek dazulinken.
    Du musst deinem Linker in geeigneter Weise sagen dass der Objektcode der Bibliothek (.lib/.a/.dll/.so-file) zu deinem compilierten Code dazugelinkt werden muss.
    Bei einer IDE macht man das normalerweise indem man in den Projekteinstellungen die Abhängigkeit von dieser Lib bekanntgibt.

    Wie das genau geht ist Compiler- (bessergesagt Linker-) bzw. IDE-Abhängig. Im Compiler/IDE-Forum wird dir da sicher weitergeholfen...



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ 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.



  • Zunächst einmal, VIELEN DANK für die hilfreichen Antworten.
    Laut Google muss ich sqlite3.lib einbinden aber wie genau mach ich das?
    Benutze VS 2008.



  • #pragma comment(lib, "sqlite3.lib")
    


  • Jochen Kalmbach schrieb:

    #pragma comment(lib, "sqlite3.lib")
    

    Danke dir!
    Und wo packe ich die SQL.lib hin? Oder gebe ich einfach den direkten Pfad an? 🙂



  • Also ich habe es nun so ausprobiert:

    #pragma comment(lib, "C:/sqlite3.dll")

    Aber die Fehlermeldungen kommen immer noch



  • biltox schrieb:

    ...

    Kannst du mir bitte sagen, warum du in der pragma-Anweisung die .dll, nicht die .lib verwendest? Davon abgesehen ist es üblich die lib in das Projektverzeichnis zu tun (Wohl keiner legt sie in das Grundverzeichnis der Festplatte ab).


Anmelden zum Antworten