QT5.14.2编译mysql-5.7.25 32位驱动办法

news2024/11/24 1:50:57

开发环境:Windows10+QT5.14.2+MySQL5.7.25

编译步骤:

1、下载安装mysql压缩包,下载地址为:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.25-win32.zip

也可以打开MySQL :: Download MySQL Community Server (Archived Versions)网页后,自行选择32位版本的mysql软件进行下载,网络上常见的mysql-installer-community-5.7.25.0.msi安装时候有时候会可以选择X86的安装,默认是64位的安装,如果安装目录是C:\Program Files\MySQL\MySQL Server 5.7则证明安装的版本是64位的,如果安装位置为C:\Program Files (x86)\MySQL\MySQL Server 5.7则证明安装的是32位的。使用64位mysql编译出来的驱动无法在mingw32中使用。

 2、下载好mysql压缩文件后,解压mysql-5.7.25-win32.zip到c:\mysql,之后新增系统环境变量:
变量名:MYSQL_HOME 变量值为:C:\mysql;编辑path环境变量,在末尾新增;%MYSQL_HOME%\bin即可。

 

 

3、打开C:\mysql目录,新建一个my.ini文件,使用记事本打开后编辑文件内容为:

[mysqld]
port = 3306
basedir=C:/mysql
datadir=C:/mysql/data 
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=utf8

 

4、使用资源管理器打开C:\Windows\System32后搜索cmd.exe,找到后点击鼠标右键-选择以管理员身份运行。

5、在打开的cmd窗口中输入下面命令注册启动mysql:

Microsoft Windows [版本 10.0.19045.2194]
(c) Microsoft Corporation。保留所有权利。

C:\Windows\System32>cd c:/mysql/bin

c:\mysql\bin>mysqld -install
Service successfully installed.

c:\mysql\bin>mysqld --initialize-insecure --user=mysql

c:\mysql\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。

c:\mysql\bin>mysqladmin -u root -p password
Enter password:
New password: ******
Confirm new password: ******
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

c:\mysql\bin>

 6、启动mysql成功后,可以使用Navicat for MySQL成功连接到127.0.0.1打开本地数据库。

7、打开QT5.14.2软件:C:\Qt\Qt5.14.2\Tools\QtCreator\bin\qtcreator.exe ,后打开C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql目录下的mysql.pro项目文件。并编辑内容为:

TARGET = qsqlmysql
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#QMAKE_USE += mysql //这一行需要注释掉,前面加#号即可。
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
#64位mysql编译时需新增如下两行
#LIBS += "C:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.lib"
#INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 5.7\include"
#32位mysql编译时需新增如下两行
LIBS += "C:/mysql/lib/libmysql.lib"
INCLUDEPATH += "C:/mysql/include"
DESTDIR = ./mysql32/lib

 8、编译运行mysql.pro项目后,会在C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql32\lib目录下生产对应的三个驱动文件:libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug。此时需要拷贝拷贝三个驱动文件
libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug三个文件
从目录:C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql32\lib到目录:C:\Qt\Qt5.14.2\5.14.2\mingw73_32\plugins\sqldrivers下。

 另外需拷贝libmysql.dll文件从
源目录:C:\mysql\lib到目标目录:C:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin下

 9、自建新的QT mingw32项目后,测试MYSQL数据库连接通过,测试代码如下:

    // 查看数据库驱动名字
    qDebug()<<QSqlDatabase::drivers();
    // 加载驱动mysql数据库驱动
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //本机数据库
    db.setHostName("127.0.0.1");
    db.setUserName("root");
    db.setPassword("123456");
    db.setDatabaseName("test");
    db.setPort(3306);
    if(!db.open())
    {
        qDebug()<< "服务器连接失败,请稍后重新尝试";
        return;
    }
    else
    {
        qDebug()<< "服务器连接成功,进行后续数据库增删改查操作";
        return;        
    }
    // 关闭数据库
    db.close();

总结:mysql数据库同一版本可能有32位的,也有64位的,同样的QT项目有使用Qt_5_14_2_MinGW_32_bit也有Qt_5_14_2_MinGW_64_bit编译器,需要一一对应;

MinGW_32项目对应就需要32位的libmysql.dll文件和编译出来的32位的三个libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug驱动文件。

MinGW_64项目对应的就需要64位的libmysql.dll文件和编译出来的32位的三个libqsqlmysql.a,qsqlmysql.dll,qsqlmysql.dll.debug驱动文件。

如果QT项目用到32位的第三方的驱动,如mqtt或者quazip,就会导致整个项目的编译只能选择指定的mingw32编译器来编译运行项目,不能使用64位的mysql驱动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144410.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Electron主进程渲染进程间通信的四种方式

在electron中进程使用 ipcMain 和 ipcRenderer 模块&#xff0c;通过开发人员定义的“通道”传递消息来进行通信。新的版本中electron推荐使用上下文隔离渲染器进程进行通信&#xff0c;这种方式的好处是无需在渲染进程中直接使用ipcRenderer发送消息&#xff0c;这种在渲染进程…

JWT令牌入门

上篇文章我们写了如何登录&#xff0c;我们着重学习Token模式下的单点登录 一、访问令牌的类型 透明令牌&#xff0c;是客户端存储一段引用数字&#xff0c;然后到达服务器指向服务器中特定的令牌 类似于&#xff0c;cookie中存储了sessionId他们之间的关系 自包含令牌&#x…

猿代码超算实习生,五步助力拿到高薪offer

虽说行行出状元&#xff0c;但是一旦入错行&#xff0c;那就是一辈子的事。互联网的潮水已经退去&#xff0c;普通人再进入也只是勉强温饱。与其朝不保夕的被裁员&#xff0c;倒不如提前锁定未来30年的幸福。 20大以来&#xff0c;芯片国产化、超算&#xff08;先进计算&#…

docker的run,cmd,entrypoint分析和对比

写在前面 本文一起看下Dockerfile中经常用到的几个类似命令&#xff0c;RUN&#xff0c;CMD&#xff0c;ENTRYPOINT。 1&#xff1a;容器是怎么来的&#xff1f; 想要有容器我们就必须先创建镜像&#xff0c;而想要有镜像&#xff0c;我们则必须写一个用来描述想要创建的镜像…

Struts2基本架构

Struts2基本架构1、Struts2执行流程2、web.xml配置3、Action控制器3.1、核心控制器3.2、业务控制器4、Result配置5、struts.xml核心配置5.1、constant元素5.2、package元素5.3、配置文件加载顺序1、Struts2执行流程 如下例子&#xff1a; 执行流程如下&#xff1a; 浏览器将请…

Python Flask开发笔记

Python Flask开发笔记一、创建flask项目1.开发环境&#xff1a;2.安装Flask3.使用pycharm&#xff0c;创建flask项目二、flask介绍1.介绍初始flask主程序接口文件2.Flask() 类1.Flask参数解释0.sys.modules用于缓存程序导入模块名1.import_name 主程序模块名2.static_url_path …

IconJar - Mac 上的一款多功能图标素材管理工具

IconJar - Mac 上的一款多功能图标素材管理工具 IconJar 是一个多功能的图标管理工具&#xff0c;由世界各地的设计师和开发人员使用。在一个应用程序中搜索、组织、预览和检索图标&#xff0c;而不是创建大量的文件夹来存储你的收藏。这款应用针对黑暗模式进行了优化&#xff…

2022年自动化测试工具汇总——实用的功能测试工具篇

如今&#xff0c;UI自动化测试工具就和雨后春笋般&#xff0c;层出不穷。由于每种工具都有自己的重点和策略&#xff0c;所以总是让人无从下手。今天我们来对比现在使用比较广泛的几个UI自动化测试工具&#xff0c;来看看他们之间的优缺点。 首先&#xff0c;我们先简单介绍一下…

4.6.4、边界网关 BGP 的基本工作原理

1、力求寻找较好的路由 因特网采用分层次的路由选择协议 内部网关协议&#xff08;例如&#xff1a;路由信息协议 RIP 或开放最短路径优先 OSPF&#xff09; 它们都是设法使分组在一个自治系统内尽可能有效地从源网络传输到目的网络无需考虑自治系统外部其他方面的策略 外部…

内网渗透-src挖掘-外网打点到内网渗透-3层内网渗透测试记录-2023年1月

1、通过信息搜集&#xff0c;发现目标有一个外网访问的通达OA系统 2、通达OA的漏洞是非常多的&#xff0c;这里利用大佬写好的通达OA一键getshell工具 成功获取webshell 3、连接webshell&#xff0c;上传cs马儿到服务器 4、执行获取主机权限 成功上线 5、通过Ladon插件发…

百分之80新手都不知道,SEO搜索引擎优化【sitemap网站地图 配置】

Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitemap 形式&#xff0c;就是XML 文件&#xff0c;在其中列出网站中的网址以及关于每个网址的其他元数据&#xff08;上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等&am…

浅析oauth2.0及应用场景

讲OAuth2.0之前&#xff0c;我们先理解一个概念&#xff0c;授权用户和资源权限的概念授权用户&#xff1a;用户访问某个应用系统&#xff0c;该应用系统请求认证中心授权以获取这个登录用户的信息&#xff0c;但并没有得到这个用户的密码&#xff0c;这个就是OAuth2.0实现的要…

N个点,求距离最近的两个点---分治策略(1)

设平面有n个点的直角坐标是,i 1, 2, ...,n,求距离最近的2个点&#xff0c;距离计算&#xff1a; 首先这个问题是可以使用蛮力算法&#xff0c;一共n(n-1)/2个点对&#xff0c;每对点对计算需要常数的时间&#xff0c;蛮力算法需要的时间。 由于点对有二维的空间坐标&#xf…

(三十)Vue之回顾本地存储webStorage

文章目录webStorageLocalStoragesessionStorage改造TodoList案例为本地存储Vue学习目录 上一篇&#xff1a;&#xff08;二十九&#xff09;Vue之组件化编码流程 下一篇&#xff1a;&#xff08;三十一&#xff09;Vue之自定义事件 webStorage 使用HTML5可以在本地存储用户…

Python基础(二十二):文件操作

文章目录 文件操作 一、文件操作的作用 二、文件的基本操作 1、文件操作步骤

同时开启的revit模型和navisworks如何同步呢?

一、 Navisworks与Revit同步问题 同时开启的revit模型和同时开启的navisworks如何同步呢? 1.如图1所示打开了一个revit模型 将模型保存在指定的路径上&#xff0c;然后通过直接拖拽的方式在navisworks manage打开模型文件&#xff0c;过程中会出现读条状态&#xff0c;如图2所…

【MySQL进阶教程】 索引使用与设计原则

前言 本文为 【MySQL进阶教程】 索引使用与设计原则 相关知识&#xff0c;下边将对索引的使用&#xff08;包括&#xff1a;验证索引效率&#xff0c;最左前缀法则&#xff0c;范围查询&#xff0c;索引失效情况&#xff0c;SQL提示&#xff0c;覆盖索引&#xff0c;前缀索引&a…

Struts2获取表单数据

Struts2获取表单数据Struts2获取表单数据1、原始Servlet方法2、属性封装3、表达式封装4、模型驱动封装Struts2获取表单数据 在Struts2中获取表单数据或提交路径的参数值的方式有4种。如下&#xff1a; 原始Servlet方法属性封装表达式封装模型驱动封装 1、原始Servlet方法 该…

文章书写方法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

Python爬虫 xpath解析基础

今天继续给大家介绍Python爬虫相关知识&#xff0c;本文主要内容是Python爬虫 xpath解析基础。 一、xpath简介 xpath&#xff0c;即XML Path Language&#xff0c;是一种用来确定XML文档中某部分位置的语言&#xff0c;Xpath以XML为基础&#xff0c;可以提供用户在数据结构树…