Библиотека Qt C ++ в проекте Android Eclipse: драйвер QSQLITE не загружен
Я создал динамическую библиотеку Qt, которая использует Qt SQL для открытия базы данных SQLite, но я получаю эту ошибку:
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
DLL работала нормально как часть приложения Qt Android, однако мне нужно использовать ее через JNI из существующего приложения Java, разработанного в Eclipse.
Это самый короткий пример кода, который воспроизводит проблему. Я загружаю библиотеку из Java и вызываю ееinit()
метод:
System.loadLibrary("plugins_sqldrivers_libqsqlite");
System.loadLibrary("Qt5Sql");
System.loadLibrary("MyQtLib");
MyQtLib.init();
А внутри библиотеки Qt я просто вызываю 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");
}
Так как ошибкаQSQLITE driver not loaded
и библиотека Qt работала внутри приложения Qt, я предполагаю, что Qt выполняет некоторую инициализацию, которую я пропускаю.
Но это не устранило ошибку, поэтому должно быть что-то еще. Обычно приложение Qt будет использоватьQtApplication.java а такжеQtActivity.java выполнить некоторую инициализацию, поэтому они должны делать что-то большее, чего я не делаю.