qt4 mysql 编译自己环境的库

本文介绍如何为Qt4编译MySQL数据库驱动程序,包括所需环境配置、编译步骤及常见错误解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:https://blog.youkuaiyun.com/bladeandmaster88/article/details/52974601

版权归原作者。

一、必须知道的一些常识

1、Qt5自带mysql数据库驱动的,而Qt4如果要进行mysql数据库操作,需要自己编译mysql数据库驱动

2、Qt安装完之后是自带两个关于mysql文件夹的,比如说我的安装目录

D:\Qt\4.8.6\src\plugins\sqldrivers\mysql,里面包含三个文件mysql.pro、main.cpp、README,

编译mysql驱动其实就是编译里面的mysql.pro项目

D:\Qt\4.8.6\plugins\sqldrivers这个目录存放已经编译好的.a和.dll文件

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

64位的mysql用64位的编译器编译。

因为我的Qt是32位的,所以我在此提供32位的mysql下载地址:

http://download.youkuaiyun.com/detail/bladeandmaster88/9668220

mysql安装方法http://jingyan.baidu.com/article/647f011591f1eb7f2148a81a.html

如果你是32位的Qt却下载64位的mysql来编译会出现各种链接错误,比如:

undefine reference to mysql_error

undefine reference to mysql_errno

………….

二、编译mysql

到mysql的安装目录C:\ProgramFiles (x86)\MySQL\MySQL Server 5.5,把里面的include文件夹和lib文件夹,把他们复制后,

在d盘建一个”mysql5.5”的文件夹,把include和lib放进去如下图,因为mysql的安装目录路径有空格

include和lib里面的头文件和库在编译的时候找不到,所以需要重新建一个路径存放include和lib,

让编译器能够识别其路径,找到里面的头文件和库。

 

 

方法一:直接用Qt编译

 

用Qt打开D:\Qt\4.8.6\src\plugins\sqldrivers\mysql中的mysql.pro项目

 在mysql.pro中加入3行代码(红色部分)

TARGET =qsqlmysql

SOURCES =main.cpp

 

INCLUDEPATH += d:/mysql5.5/include

LIBS += d:/mysql5.5/lib/libmysql.lib

CONFIG += bulid_all

include(../../../sql/drivers/mysql/qsql_mysql.pri)

include(../qsqldriverbase.pri)

注意:

1、红色代码一定要在绿色两行代码之前,否则出现error: cannot find –llibmysql,

2、INCLUDEPATH +=d:/mysql5.5/include

LIBS += d:/mysql5.5/lib/libmysql.lib

这两句是为了找到include头文件和 lib库

3、CONFIG += bulid_all是为了一次性就能同时生产release版和debug版的库

直接点击运行按钮,编译结果如图:

 

把debug和release里面生成的libqsqlmysql4.a,libqsqlmysqld4.a, qsqlmysql4.dll,qsqlmysqld4.dll 四个文件

拷贝到D:\Qt\4.8.6\plugins\sqldrivers,还必须将D:\mysql5.5\lib下的libmysql.dll拷贝到D:\Qt\4.8.6\bin

 

测试:

#include<QCoreApplication>

#include<QSqlDatabase>

#include<QDebug>

#include<QStringList>

 

intmain(intargc,char*argv[])

{

   QCoreApplicationa(argc,argv);

   qDebug()<<"Availabledrivers:";

   QStringListdrivers=QSqlDatabase::drivers();

   foreach(QStringdriver,drivers)

       qDebug()<<"\t"<<driver;

 

   returna.exec();

}

输出结果:

Availabledrivers:

"QSQLITE"

"QMYSQL3"

"QMYSQL"

"QODBC3"

"QODBC"

输出了"QMYSQL3" "QMYSQL"说明mysql驱动已经编译好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值