Tôi đã tạo một Qt lib động có sử dụng Qt SQL để mở một cơ sở dữ liệu SQLite, nhưng tôi nhận được lỗi này:Qt C++ thư viện trong Android Eclipse dự án: tài xế QSQLITE không nạp
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
Các DLL đã hoạt động tốt như một phần của ứng dụng Android Qt, tuy nhiên tôi cần sử dụng nó thông qua JNI từ một ứng dụng Java hiện có được phát triển trong Eclipse.
Đây là mã ví dụ ngắn nhất tái tạo sự cố. Tôi tải thư viện từ Java và gọi phương thức init()
của nó:
System.loadLibrary("plugins_sqldrivers_libqsqlite");
System.loadLibrary("Qt5Sql");
System.loadLibrary("MyQtLib");
MyQtLib.init();
Và bên trong thư viện Qt tôi chỉ cần gọi 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");
}
Kể từ khi lỗi là QSQLITE driver not loaded
, và Qt thư viện đã được làm việc bên trong một ứng dụng Qt, tôi giả định rằng Qt đang làm một số khởi tạo mà tôi đang thiếu.
Nhưng điều này đã không xóa lỗi, do đó, nó phải là một cái gì đó khác. Thông thường, ứng dụng Qt sẽ sử dụng QtApplication.java và QtActivity.java để thực hiện một số khởi tạo, do đó, chúng phải làm điều gì đó ở đó mà tôi không làm.
có thể giúp bạn ... http://stackoverflow.com/questions/15944120/how-to-install-mysql-c-driver-on-windows – AngryDuck
@AngryDuck Cảm ơn bạn đã liên kết nhưng tôi không thể tìm thấy bất cứ điều gì liên quan đến câu hỏi của tôi ngoại trừ thông báo lỗi là như nhau. Anh chàng này là trên Windows thay vì Android, và kịch bản sử dụng của anh ta hoàn toàn khác - anh ta không tải một thư viện được chia sẻ Qt trong một dự án android Eclipse hiện có. Bạn có một số lý do cụ thể để đăng liên kết, tức là tôi có thiếu gì đó không? – sashoalm