Ho creato un lib dinamica Qt che utilizza Qt SQL per aprire un database SQLite, ma sto ottenendo questo errore:Qt C++ in Eclipse Android progetto: conducente QSQLITE non caricato
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
La DLL stava funzionando bene come parte di un'applicazione Android Qt, tuttavia ho bisogno di usarlo attraverso JNI da un'applicazione Java esistente sviluppata in Eclipse.
Questo è il codice di esempio più breve che riproduce il problema. Ho caricare la libreria da Java e chiamare il metodo init()
:
System.loadLibrary("plugins_sqldrivers_libqsqlite");
System.loadLibrary("Qt5Sql");
System.loadLibrary("MyQtLib");
MyQtLib.init();
E dentro la libreria Qt mi basta chiamare 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");
}
Dal momento che l'errore è QSQLITE driver not loaded
, e il Qt la libreria stava lavorando all'interno di un'applicazione Qt, suppongo che Qt stia facendo un'inizializzazione che mi manca.
Ma questo non ha rimosso l'errore, quindi deve essere qualcos'altro. Normalmente, l'applicazione Qt userà QtApplication.java e QtActivity.java per eseguire alcune inizializzazioni, quindi devono fare qualcosa di più là che non sto facendo.
potrebbe aiutarti ... http://stackoverflow.com/questions/15944120/how-to-install-mysql-c-driver-on-windows – AngryDuck
@AngryDuck Grazie per il link, ma non ho trovato tutto ciò che è pertinente alla mia domanda eccetto il messaggio di errore è lo stesso. Questo ragazzo è su Windows invece che su Android, e il suo scenario d'uso è completamente diverso - non carica una libreria condivisa Qt in un progetto Android Eclipse esistente. Hai qualche motivo specifico per pubblicare il link, cioè mi manca qualcosa? – sashoalm