c++ - 未加载 QSQLITE 驱动程序 - 放置 qt 数据库驱动程序插件的位置

标签 c++ visual-studio sqlite qt

我正在使用 VS2008 和 QT 插件来制作我的应用程序。在我运行应用程序时打包后出现错误:

QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers: 
Database error: QSqlError(-1, "Driver not loaded", "Driver not loaded") 
QSqlError(-1, "Driver not loaded", "Driver not loaded") 

我已将 qsqlite.dll 添加到我的包中并更改了 libpath。但我仍然收到此错误。如何解决这个问题。

我的代码::

  QStringList str;
str.append(".");
a.setLibraryPaths(str);
a.addLibraryPath("./sqldrivers/");

//a.addLibraryPath(".");

qDebug()<<"my library path : "<<a.libraryPaths();

QLibrary sqlib("qsqlite4.dll");
sqlib.load();
qDebug()<<"my library loaded"<<sqlib.isLoaded();

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
qDebug()<<"Database error:"<<db.lastError();

db.setDatabaseName("vimukti1234");
qDebug()<< db.lastError();

 db.open();
QSqlQuery query;

最佳答案

驱动程序需要放在“sqldrivers”下,而不是与可执行文件在同一目录中(它们在运行时加载,Qt 在“sqldrivers”中查找它们)。 我们安装的一个应用程序的典型结构是这样的:

.:
total 26616
-rwxr-xr-x 1 root root 2245632 Sep 29 03:53 AlvaEditor.exe
-rwxr-xr-x 1 root root 2335232 Sep 29 03:53 QtCore4.dll
-rwxr-xr-x 1 root root 8421376 Sep 29 03:53 QtGui4.dll
-rwxr-xr-x 1 root root  199168 Sep 29 03:53 QtSql4.dll
-rwxr-xr-x 1 root root  306688 Sep 29 03:53 libctemplate.dll
-rwxr-xr-x 1 root root   26624 Sep 29 03:53 qgif4.dll
-rwxr-xr-x 1 root root   28672 Sep 29 03:53 qico4.dll
-rwxr-xr-x 1 root root  200704 Sep 29 03:53 qjpeg4.dll
-rwxr-xr-x 1 root root  222720 Sep 29 03:53 qmng4.dll
-rwxr-xr-x 1 root root  439808 Sep 29 03:53 qsqlite4.dll
-rwxr-xr-x 1 root root   21504 Sep 29 03:53 qsvg4.dll
-rwxr-xr-x 1 root root  287232 Sep 29 03:53 qtiff4.dll
drwxr-xr-x 2 root root    4096 Sep 29 03:53 sqldrivers

./sqldrivers:
total 432
-rwxr-xr-x 1 root root 439808 Sep 29 03:53 qsqlite4.dll

关于c++ - 未加载 QSQLITE 驱动程序 - 放置 qt 数据库驱动程序插件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5151279/

相关文章:

visual-studio - Visual Studio 2008 - 显示堆

sql - SQL子查询返回记录,但是主查询整体返回零行

c++ - libcurl4-openssl-dev :armhf cannot be installed when libcurl4-openssl-dev is already installed

c++ - 使用模板包进行扩展

c++ - 获取 const 左值引用的地址是否合法?

vb.net - 如何在 Visual Studio 2015 中更改 VB.NET 语言版本

c++ - 为什么在抛出 'std::bad_alloc' 实例后调用终止?

visual-studio - 安全移动 Microsoft SDKs 文件夹

python - SQLAlchemy:一对一关系对象创建问题

python - 选择具有最大值的条目并删除指定日期的其他条目