QSQLITE driver not loaded

hit_ybsix 2017-02-25 06:27:48
环境:虚拟机fedora16
QTCreator
交叉编译环境:GCC 4.7.3

问题就是在虚拟机上编译运行一段数据库代码,能够正常打印出qdebug的信息,交叉编译生成开发板上运行的可执行文件运行的时候就出现:
QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers:
但是我在PC虚拟机上交叉编译ARM版sqlite数据库,生成的/bin/sqlite3放到了开发板/bin下,把/lib下的libsqlite3.so.0.8.6 libsqlite3.so libsqlite3.so.0 也拷贝到ARM板根目录/lib目录下。
并且在开发板执行:sqlite3 -version会打印版本信息;

看很多博客,我也把我PC虚拟机/usr/local/TrollTech/QTembedded4.8.2/plugins目录拷贝到开发板qt/目录下…………
然而还是有上述错误。求各位大神指教
代码
#include <QtCore/QCoreApplication>
//#include "database.h"
#include<QtSql>
#include <QSqlDatabase>
#include <QDebug>
#include <QSqlQuery>
#include <QStringList>
//#include<QMessageBox>
#include<QSqlError>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
//添加数据库驱动
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << driver;
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
//设置数据库名称
db.setDatabaseName(":memory:");qDebug()<<"inserted!1";
//打开数据库
if(!db.open())
{
qDebug()<<db.lastError();

return false;
}

//以下执行相关sql语句
QSqlQuery query;

//新建student表,id设置为主键,还有一个name项
query.exec("create table student(id int primary key,name varchar)");

//向表中插入3条记录
query.exec("insert into student values(1,'xiaogang')");
query.exec("insert into student values(2,'xiaoming')");
query.exec("insert into student values(3,'xiaohong')");

//查找表中id >=2 的记录的id项和name项的值
query.exec("select id,name from student where id >= 2");

//query.next()指向查找到的第一条记录,然后每次后移一条记录
while(query.next())
{
//query.value(0)是id的值,将其转换为int型
int value0 = query.value(0).toInt();
QString value1 = query.value(1).toString();
//输出两个值
qDebug() << value0 << value1 ;
}

return a.exec();
}


报错图片:
...全文
1173 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
我要买奔驰 2017-06-15
  • 打赏
  • 举报
回复
亲,我也遇到这个情况了。。PC(archlinux)运行正常,在embedded上就出现了这个错误,编译了sqlite3,请问你是怎么解决的啊~!
hit_ybsix 2017-02-27
  • 打赏
  • 举报
回复
啊啊啊啊啊啊啊 为什么没有大神回复
话说现在的问题是如图
程序执行到db.open()的时候出现illegal instruction
hit_ybsix 2017-02-27
  • 打赏
  • 举报
回复
引用 2 楼 dell_tx 的回复:
一些库文件的DLL需要拷贝到运行目录下 Qt5Sql.dll

在开发板上执行shell命令如图:

是不是意味着开发板上并没有成功安装好驱动呀
hit_ybsix 2017-02-27
  • 打赏
  • 举报
回复 1
引用 2 楼 dell_tx 的回复:
一些库文件的DLL需要拷贝到运行目录下 Qt5Sql.dll
但是我的桌面版sqlite的版本和开发板上的版本不同一个版本,桌面版是以前编译qt库的时候自动生成的,然后ARM板是前几天在官网上下载并且交叉编译的…………这样会有影响么
hit_ybsix 2017-02-27
  • 打赏
  • 举报
回复
谢谢您的回复!
我的开发板上,/usr/local/qt/lib目录下是
然后开发板的/etc/profile.d/usr_env.sh下设置的环境变量为:

所以 我是把相关目录添加进开发板了的……
但是出现这个错误实在是不知道为啥…………
  • 打赏
  • 举报
回复
一些库文件的DLL需要拷贝到运行目录下 Qt5Sql.dll

16,173

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧