Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 未加载QSQLITE驱动程序-将qt数据库驱动程序插件放置在何处_C++_Visual Studio_Sqlite_Qt - Fatal编程技术网

C++ 未加载QSQLITE驱动程序-将qt数据库驱动程序插件放置在何处

C++ 未加载QSQLITE驱动程序-将qt数据库驱动程序插件放置在何处,c++,visual-studio,sqlite,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")

我正在使用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;
QStringList-str;
str.append(“.”);
a、 设置库路径(str);
a、 addLibraryPath(“./sqldrivers/”);
//a、 addLibraryPath(“.”);

qDebug()驱动程序需要放在“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
先试试这个:

qDebug() << QSqlDatabase::drivers();

qDebug()嗯,函数:addDatabase(“QSQLITE”);接受两个参数,第一个是驱动程序,第二个是连接的名称(作为QString传递)

现在,请尝试以下操作:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "SQLITE");
qDebug()  <<  QSqlDatabase::drivers();
它对我有用,所以我想它对你也有用。(假设SQLITE是您安装的驱动程序之一)

您可以通过以下方式检查SQLITE:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "SQLITE");
qDebug()  <<  QSqlDatabase::drivers();

只需添加包含文件夹life platform和drivesr的dll文件

因此,只需使用工具Linux平台构建应用程序: 使用
.config
文件中启用的
BR2_-PACKAGE\u-QT5BASE\u-SQLITE\u-Qt=y
选项构建Qt源代码,并将输出路径
lib/Qt/plugins/sqldrivers/libqlite中生成的sqldrivers复制到目标板上的/usr/lib/Qt/plugins/sqldrivers/并运行应用程序。

此外,您还可以使用“QApplication::libraryPaths()”API检查二进制/应用程序在何处以及在何处查找库和插件

我现在能够成功地在VS中构建。我也在制作驱动程序包,但数据库在其他系统中仍然不工作我仍然不明白,sqldrivers应该放在哪里?sqldrivers目录应该放在与主可执行文件相同的位置。