qt交叉编译mysql驱动的简单介绍

本文目录一览:

如何解决Qt Mysql中无法加载驱动问题

本文讲解是如何解决Qt Mysql中无法加载驱动问题,MySQL是一个小型关系型数据库管理系统。对于已经融入到Qt中的MySQL,也是很推广!那么先看本文的介绍。

做毕业,这两天一个很大的问题困惑的我不行。毕设我是用qt + mysql来做的。结果在自己电脑上跑起来很正常,但是编译一个release版本,拿到另外一台电脑上就报错说:can’t load driver 。试图去解决这个问题,今天总算搞定,这里总结一下。

首先需要说明的是:我用的是qt for vc2005,qt4.5.0 mysql server5.5

整个流程:

1:首先我编译了一个release版本,而后用dependency walker查看了下库的依赖情况。发现依赖于:QtSql4.dll,QtGui4.dll,QtCore4.dll,msvcr80.dll以及KERNEL32.DLL这几个库。其中最后一个是system的,我们不用去管,剩下的这几个显然都需要拷贝到exe同目录下。尤其是msvcr80.dll,我在我电脑上搜了一下:有多大10几个同名的该文件,所以拷贝哪个是很重要的,此时我们只需要在dependency walker查看这个dll的属性,然后去对应目录底下拷贝就行了。所以:第一步就是把这些依赖库拷贝到exe同目录下。(千万不要拷贝错误,尤其是不同的版本)。

2、做完1之后再次运行,提示:找不到驱动。 问了一下别人,告之需如下做:

(1)首先在exe同目录下建一个plugins\sqldrivers这样的二级目录,而后将前边编译生成的qt-mysql驱动:qsqlmysql4.dll放到里边。

(2)而后在main.cpp中加上如下两句:

QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ “plugins”); qApp.addLibraryPath(strLibPath);

做完这两部之后:按理应该没问题了,但是run一下发现:还是提示驱动找不到。

3、再后来,上网查了一下各种说法,发现几种可能性:①你要发布的电脑上没有安装mysql ②mysql版本不对。 我就纳闷了:找不到驱动与装没装mysql有什么关系?毕竟:驱动是我自己编译的,又不是mysql提供的。 问了下别人,别人也这么认为。然后就卡在这里了。 我不死心,继续在网上寻找各种可能的答案并进行尝试。最后找了问题,原来:我们需要把mysql提供的:libmySQL.dll这个库拷贝到exe同目录下(该文件在我自己电脑上处于:C:\Program Files\MySQL\MySQL Server 5.5\bin文件夹下)。如此之后再来运行就不再报:找不到驱动这个错误啦!(此时报的是:连接不到某个指定的数据库,那是因为我还没有把数据库文件导入到目标机器上来)。

总结:在其他pc上发布的时候需要做如下工作:

1、使用depenency walker查看依赖库,全部拷贝到exe同文件夹下。

2、(1)在exe同目录下建一个plugins\sqldrivers这样的二级目录,而后将前边编译生成的qt-mysql驱动:qsqlmysql4.dll放到里边。

(2)而后在main.cpp中加上如下两句:

QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ “plugins”); qApp.addLibraryPath(strLibPath);

3、将mysql/bin目录下的libmySQL.dll拷贝到exe同目录下。

做完以上几步之后就OK了。

至于最后所报的连接不到指定的数据库,原因是这样的:

在开发的电脑上:你建了一个mysql数据库,那么我们需要把这个数据库文件也拷贝到目标机器上,并在目标机器上装mysql,而后将这个数据库文件导入进去。 导入之后你会发现:各字段的数据有可能出现乱码,这是由于各个字段的编码格式在开发机器和目标机器上不一致 导致的! 你需要按照开发机器上的数据库文件配置来重新设置一下目标机器的各个字段编码格式。

而在目标机器上导入数据库文件的方法是:(以建立的数据路名为buaa.sql为例)

1、在目标机器上装mysql

2、命令行运行mysql,进入后执行命令:create database buaa;

3、导入buaa.sql到刚创建的buaa数据库中。(我用的mysql-front这个数据库图形化工具)。

测试: Qt4.5.0commercial + vc2005 express + mysql5.5 +mysql-front +windows xp

(网上很多人说:找不到驱动是因为目标机器上没有安装vc运行时库的原因,但是我这里没有遇到这个问题:我测试的电脑没有任何vc环境,没有任何qt环境,也没有安装windows sdk。 但是如果大家按照我上边的方法测试发现有问题时:可以考虑在目标机器上安装vc运行时库试一下。它分sp1版本和 非sp1版本,你对应主机的vc版本选择一个安装就是。)

小结:关于如何解决Qt Mysql中无法加载驱动问题,介绍完了,好像出现此问题的友们还是有很多滴,希望本文对你有所帮助。

qt连接mysql数据库怎么编译驱动

下载mysql C链接库

选择C的链接库

2

将C的连接库解压到到C:/mysql 目录下

3

我的QT 安装在C盘目录下,版本号是4.8.6 所以打开目录

C:\QT\4.8.6\src\plugins\sqldrivers\mysql

4

将C:/mysql/lib/libmysql.dll 和C:/mysql/lib/libmysql.lib

复制到此处。

5

编辑目录下的mysql.pro文件

添加

INCLUDEPATH+=”C:/mysql/include”

LIBS+=”C:/mysql/lib/opt/libmysql.lib”

运行qt的控制台窗口,方便使用qmake

切换到目录下

C:\QT\4.8.6\src\plugins\sqldrivers\mysql

执行qmake

运行VS2010的控制台工具

切换到

C:\QT\4.8.6\src\plugins\sqldrivers\mysql 目录下

执行nmake 和nmake release

是nmake不是make

这样在C:\QT\4.8.6\src\plugins\sqldrivers\mysql 目录下的debug 目录和release 目录下分别会产生

qsqlmysqld4.dll qsqlmysqld4.lib

qsqlmysql4.dll qsqlmysql4.lib

将上面提到的四个文件复制到

C:\QT\4.8.6\plugins\sqldrivers

最后把

C:\mysql\lib\opt\libmysql.dll

C:\mysql\lib\opt\libmysql.lib

复制到

C:\Windows\system32\ 目录下。

最后测试mysql 可不可以在qt中正常使用

新建一个qt 控制台项目

输入以下代码

#include QCoreApplication

#include QDebug

#include qstring.h

#include qstringlist.h

#include qsql.h

#include qsqldatabase.hint main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

qDebug() “Available drivers:”;

QStringList drivers = QSqlDatabase::drivers();qDebug() drivers;return a.exec();

}

运行测试一下,看看有没有图片中红圈圈中的两项内容

求教大神 qt5编译mysql驱动问题

注意编译器一定要和MYSQL的平台版本一致,32位的用32位的编译器编译,64位的用64位的编译器编译。

准备工作:MYSQL的目录:D:\SQL_Server\mariadb

Qt5.1.1的目录:C:\Qt

1. 先将D:\SQL_Server\mariadb中的include\和lib\文件夹复制到根目录(C:),因为后面make时路径不能有空格。

2. 打开QT5.1.1 for Desktop(MinGW 4.8)

cd C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\src\plugins\sqldrivers\mysql

qmake “INCLUDEPATH+=D:\SQL_Server\mariadb\include” “LIBS+=D:\SQL_Server\mariadb\lib\libmysql.lib” mysql.pro

mingw32-make

如果出现找不到mysql.h文件就用qtcreator打开mysql.pro文件,配置项目,然后编译,就会出现错误提示,把#include mysql.h改成#include mysql/mysql.h,编译就行了,或回到命令行再次执行mingw32-make即可.

3. 编译成功后。

进入到C:\Qt\Qt5.1.1\5.1.1\Src\qtbase\plugins\sqldrivers目录下,选中qsqlmysql.dll和 qsqlmysqld.dll两个文件,

复制到C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\sqldrivers目录下。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/300869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-29 14:18
下一篇 2024-12-29 14:18

相关推荐

  • 如何修改mysql的端口号

    本文将介绍如何修改mysql的端口号,方便开发者根据实际需求配置对应端口号。 一、为什么需要修改mysql端口号 默认情况下,mysql使用的端口号是3306。在某些情况下,我们需…

    编程 2025-04-29
  • Python简单数学计算

    本文将从多个方面介绍Python的简单数学计算,包括基础运算符、函数、库以及实际应用场景。 一、基础运算符 Python提供了基础的算术运算符,包括加(+)、减(-)、乘(*)、除…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • Qt雷达探测教程

    本文主要介绍如何使用Qt开发雷达探测程序,并展示一个简单的雷达探测示例。 一、环境准备 在开始本教程之前,需要确保你的开发环境已经安装Qt和Qt Creator。如果没有安装,可以…

    编程 2025-04-29
  • Python海龟代码简单画图

    本文将介绍如何使用Python的海龟库进行简单画图,并提供相关示例代码。 一、基础用法 使用Python的海龟库,我们可以控制一个小海龟在窗口中移动,并利用它的“画笔”在窗口中绘制…

    编程 2025-04-29
  • Python操作MySQL

    本文将从以下几个方面对Python操作MySQL进行详细阐述: 一、连接MySQL数据库 在使用Python操作MySQL之前,我们需要先连接MySQL数据库。在Python中,我…

    编程 2025-04-29
  • MySQL递归函数的用法

    本文将从多个方面对MySQL递归函数的用法做详细的阐述,包括函数的定义、使用方法、示例及注意事项。 一、递归函数的定义 递归函数是指在函数内部调用自身的函数。MySQL提供了CRE…

    编程 2025-04-29
  • Python樱花树代码简单

    本文将对Python樱花树代码进行详细的阐述和讲解,帮助读者更好地理解该代码的实现方法。 一、简介 樱花树是一种图形效果,它的实现方法比较简单。Python中可以通过turtle这…

    编程 2025-04-28
  • MySQL bigint与long的区别

    本文将从数据类型定义、存储空间、数据范围、计算效率、应用场景五个方面详细阐述MySQL bigint与long的区别。 一、数据类型定义 bigint在MySQL中是一种有符号的整…

    编程 2025-04-28
  • Python大神作品:让编程变得更加简单

    Python作为一种高级的解释性编程语言,一直被广泛地运用于各个领域,从Web开发、游戏开发到人工智能,Python都扮演着重要的角色。Python的代码简洁明了,易于阅读和维护,…

    编程 2025-04-28

发表回复

登录后才能评论