Ich habe eine Qt dynamische lib erstellt, die Qt SQL verwendet eine SQLite-Datenbank zu öffnen, aber ich bin immer diese Fehlermeldung:Qt C++ Bibliothek in Android Eclipse-Projekt: QSQLITE Treiber nicht
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
Die DLL funktionierte gut als Teil einer Qt-Android-Anwendung, aber ich muss es über JNI aus einer bestehenden Java-Anwendung in Eclipse entwickelt verwenden.
Dies ist der kürzeste Beispielcode, der das Problem reproduziert. Ich lade die Bibliothek von Java und rufen seine init()
Methode:
System.loadLibrary("plugins_sqldrivers_libqsqlite");
System.loadLibrary("Qt5Sql");
System.loadLibrary("MyQtLib");
MyQtLib.init();
Und in der Qt-Bibliothek Ich nenne nur QSqlDatabase :: addDatabase():
JNIEXPORT void JNICALL Java_test_MyQtLib_foo(JNIEnv *, jclass)
{
// Manually create a QCoreApplication instance.
int argc = 1;
static char arg[] = "";
static char *arg2 = arg;
app = new QCoreApplication(argc, &arg2);
// Try to add an SQLite db connection.
QSqlDatabase::addDatabase("QSQLITE");
}
Da der Fehler QSQLITE driver not loaded
ist, und die Qt Bibliothek arbeitete in einer Qt-Anwendung, ich nehme an, dass Qt einige Initialisierung, die ich vermisse.
Aber das hat den Fehler nicht entfernt, also muss es etwas anderes sein. Normalerweise wird die Qt-Anwendung QtApplication.java und QtActivity.java verwenden, um einige Initialisierung durchzuführen, also müssen sie etwas mehr dort tun, das ich nicht mache.
könnte Ihnen helfen ... http://stackoverflow.com/questions/15944120/how-to-install-mysql-c-driver-on-windows – AngryDuck
@AngryDuck Danke für den Link, aber ich konnte nicht finden alles, was für meine Frage relevant ist, außer die Fehlermeldung ist die gleiche. Dieser Typ ist auf Windows statt auf Android und sein Anwendungsszenario ist komplett anders - er lädt keine Qt shared library in ein bestehendes Eclipse android Projekt. Hattest du einen bestimmten Grund, den Link zu posten, d. H., Fehlt mir etwas? – sashoalm