Qt5 und Sqlite3
-
es gibt zB diese beiden optionen ...
-plugin-sql-sqlite (build as a plugin) or -qt-sql-sqlite (linked directly into the Qt library).
ich habe das letzte benutzt. kann gut sein, dass er deswegen die ganze Lib neu gebaut hat, so dass die sqlite lib direkt mit eingebaut wird. war wahrscheinlich die falsche wahl.
-
Ja, du kannst es als Plugin benutzen, dann ist es einfach eine lib in irgendeinem Verzeichnis und du musst deinem Programm sagen, wo das die Plugins suchen soll.
-
Hab gerade gesehen das bei allen Optionen Qt erst installiert werden muss nach /usr/local/Qt-5.5. Ich will das aber nicht, da ich ja Qt in /opt schon habe. Ich kann doch sicher auch so manuell Pfade erstellen, wo zB meine sqlite Lib im System liegt oder nicht?
-
Schau hier:
http://doc.qt.io/qt-5/deployment-plugins.html
Den Pfad kannst über eine Umgebungsvariable übergeben.
-
Das einzigste was ich daraus schließen kann ist das ich einen zusätzliche Pfad angeben kann. Zum Beispiel
QApplication::addLibraryPath("/usr/lib/x86_64-linux-gnu");
Nutzt er für Sqlite dann automatisch die Lib die dort drin liegt? Bin gerade ein wenig überfordert. Verstehe nicht warum QT nicht die aktuelle Sqlite Version benutzt. Stattdessen muss man verdammt viel selber machen, da hats man bei .NET oder PHP einfacher. Bin was das alles angeht ziemlich neu und verstehe irgendwie noch nicht alles.
-
Ich weiß nicht, ob das irgendwas damit zu tun hat, ob Qt die aktuelle Version benutzt. Du musst das so sehen. Qt besteht aus mehreren Libraries, eine davon ist QtNetwork. Das enthält ein Framework für Datenbankzugriffe. Und da hast du nun mal das "Problem", dass das datenbankspezifisch ist. Also muss man für jede Datenbank eigene "Treiber" implementieren. Also muss das Framework selbstverständlich erweiterbar sein, damit man weitere Datenbanken anbinden kann. Deswegen gibts da die Möglichkeit, dass die Treiber nicht nur statisch in die QtNetwork reingelinkt werden, sondern dass auch Plugins nachgebaut werden. Bei den mitgelieferten Treibern hast du die Auswahl, wie du das machst. Du kannst den Sqlite Treiber in die QtNetwork mitreinkompilieren oder als eigenständiges Plugin bauen. Das ist eigentlich völlig egal, das sollte derselber Code sein, also versteh ich da grad nicht so ganz, wo hier eine neue und eine alte Version ist. Das hat damit erstmal nichts zu tun.
Ja, der versucht aus allen angegebenen Pluginverzeichnissen die Libs zu laden.
-
Welche Lib bevorzugt er dann? Im Plugin Verzeichnis von Qt gibt es eine libsqlite, aber unter meine Pfad ist die libsqlite3.
-
Keine Ahnung... Du kannst ja reindebuggen. Deswegen würd ich auch empfehlen, die Qt selber zu bauen. Ich debugge sehr oft in der Qt rum, man muss oft genauer schauen, was da eigentlich passiert.
-
Hab gesehen, wenn ich Qt nochmal selber kompiliere, dann kann ich 2 Kits erstellen im QT Creator. Ich kann wohl auch gleichzeitig 2 Kits in einem Projekt ausgewählt haben. Kannst du mir das empfehlen?
-
Ich benutze den Qt Creator nicht und weiß jetzt gar nicht, was ein Kit ist.