Ich kompiliere sqlite3 mit Visual Studio 2008. Wenn ich versuche, in jede sqlite3-Funktion (z. B. sqlite3_open
) Single-Step, Visual Studio zeigt die falsche Zeile des Quellcodes. Und es sieht wirklich falsch aus. Die sqlite3_open
-Funktion scheint in Zeile 114,788 deklariert zu werden; und wenn ich einschreite, bringt es mich zu Zeile 49,254.Visual Studio 2008 falsche Quellzeile
Ich habe versucht, alles neu aufzubauen. Ich denke, ich kompiliere alles auf die gleiche Weise (d. H. Dieselbe Laufzeitbibliothek, Debug-Informationsformat usw.).
Was mache ich falsch?
Bearbeiten: Um sqlite3 für Windows zu kompilieren, habe ich ein neues "Win32-Projekt" mit dem Namen "sqlite3" erstellt, das eine statische Bibliothek und ein leeres Projekt auswählt. Ich habe "sqlite3.c" in den "Source Files" -Ordner unter dem neuen "sqlite3" -Projekt und die "sqlite3.h" -Datei in den "Header files" -Ordner hinzugefügt. Das Kompilieren bei diesem Schritt führte zu sqlite3.lib.
Hier ist die Befehlszeile in cl geben:
/Od /D "WIN32" /D "_DEBUG" /D "_LIB" /D "_MBCS" /Gm /EHsc /RTC1 /MTd /Fo"Debug\\" /Fd"Debug\vc90.pdb" /W3 /nologo /c /ZI /TP /errorReport:prompt
ich ein separates EXE-Projekt in der gleichen Lösung, die ich als „Win32-Projekt“ erstellt die Auswahl für sie ein „leeres Projekt zu sein "und eine" Konsolenanwendung ". Dieses Projekt enthält den Header sqlite3.h und als "Zusätzliche Abhängigkeiten" schließe ich sqlite3.lib ein. Mein Code sieht wie folgt aus:
sqlite3 *pDb;
sqlite3_open("C:\\some.db", &pDb);
Schritt in diese Funktion mich an die falsche Quellenleitung in sqlite3.c bringt.
Edit2: Hier ist der Link auf die sqlite3 Quelle, die ich heruntergeladen http://www.sqlite.org/sqlite-amalgamation-3071100.zip
Und hier ist die Dokumentation, wie es auf diese Weise bauen (das heißt, nur die sqlite3.c in Ihrem Projekt kompiliert): http://www.sqlite.org/amalgamation.html
Edit3: Für was es wert ist, scheint der Call-Stack in meinem Debugging-Fenster den richtigen Code zu folgen. Und die korrekte Verwendung der API führt zu korrekten Ergebnissen. Es scheint, die Kompilierung funktioniert, die Quellcodezeile ist einfach falsch.
Wie können wir mit diesem kleinen auch vermuten? –
@DanielFischer Sorry, was sollte ich noch hinzufügen, um die Bestimmung zu erleichtern? – omghai2u
Für den Anfang könnten die genauen Schritte, die Sie zum Kompilieren verwendet haben, hilfreich sein. –