qt4 mingw mysql驱动_Qt4.7.3(MinGW Opensource版)windows编译mysql驱动

鉴于不少朋友索要这个mysql驱动,所以有了此文,授人鱼不如受之以渔。

网上此类帖子文章不少,但大家可能还是碰到这样那样的问题,今天我把我的编译经历尽量详细写出来,以便碰到同样问题时能够减少不必要的弯路。

首先说下我的环境:

系统:windows xp sp3

QT : (Qt by Nokia v4.7.3 (MinGW OpenSource))

Mysql: 5.1社区版

MinGW用的QtCreator 2.2.1里带的mingw

PATH:

确保有D:\Qt\4.7.3\bin用的qmake.exe

C:\Qt\qtcreator-2.2.1\mingw\bin(mingw32,里面有gcc,g++,make工具和编译链接工具,离不了,呵呵)

d:\Program Files\MySQL\MySQL Server 5.1\bin 这下面有mysql动态库libmySQL.dll

定义了个环境变量QTDIR值D:\Qt\4.7.3表示qt的目录

首先注意mysql安装时不要用经典安装,选择完全安装或者自定义把头文件和库勾选上,这样安装后会有for c/c++的头文件和库目录:

8e6927b3aeda66b864079e43cbdf2633.png

因为这里我们使用MinGW来编译驱动,mysql提供的这个libmysql.lib我们还不能直接用(如果用微软的编译器就不用这样了),我们需要用个工具转成*.a来用。

工具下载:

解压我们只用remip.exe这个东西,把他放在你的mingw/bin和那些make.exe放一起就行。

cd D:\Program Files\MySQL\MySQL Server 5.1\lib\opt

转到库目录

reimp -d libmysql.lib (生成 libmysql.def文件)

dlltool -k -d libmysql.def -l libmysql.a (生成 libmysql.a文件)

66049498944e85c5609af824ab9131d9.png

over了,出来这2个东西了。

f877c341a4f022f6efc5df604d27e0a6.png

好了需要的kulibmysql.a准备好了

下面开始编译之旅:

来到qt mysql驱动的源程序目录,有个cpp文件和一个qt项目文件。

cebb9159ecdbb6195afb7de3500c76d0.png

cd %QTDIR%/src/plugins/sqldrivers/mysql

当前目录转到源程序目录。

qmake -o Makefile "INCLUDEPATH+=D:/Progra~1/MySQL/MySQLS~1.1/include" "LIBS+=D:/Progra~1/MySQL/MySQLS~1.1/LIB/OPT/libmysql.a" mysql.pro

得到makefile (注意libmysql.a这个大小写问题,否则会不成功)

make

debug里出现了调试版本的了。

make release

release版本

f550543a91c03983f2dbf243140dfebc.png

1ede843ab44822319dc7b6b68c92d247.png

edd8bbff35fbcc2f8ebae9a082719198.png

把这4个文件copy到你的qt驱动目录吧

ea39cb8a3b595bbba5997bdbd260cdfd.png

下面来测试下:

头文件:

#ifndef PRODUCTVIEWERDIALOG_H

#define PRODUCTVIEWERDIALOG_H

#include 

#include 

#include "ui_productviewer.h"

classProductViewerDialog:publicQDialog,publicUi::products

{

Q_OBJECT

public:

ProductViewerDialog(QWidget *parent=0);

privateslots:

voidon_queryButton_clicked();

private:

QSqlDatabase db;

};

#endif // PRODUCTVIEWERDIALOG_H

源文件:

#include 

#include 

#include "productviewerdialog.h"

ProductViewerDialog::ProductViewerDialog(QWidget *parent):QDialog(parent)

{

setupUi(this);

this->db=QSqlDatabase::addDatabase("QMYSQL");

this->db.setHostName("127.0.0.1");

this->db.setUserName("root");

this->db.setPassword("123456");

this->db.setDatabaseName("nwind");

}

//点击查询

voidProductViewerDialog::on_queryButton_clicked()

{

QSqlTableModel *mode  = newQSqlTableModel(this->tableView,this->db);

if(this->db.open())

{

mode->setTable("nwproducts");

this->tableView->setModel(mode);

mode->select();

}

else

{

QMessageBox::warning(this,tr("error"),tr("Database cannot be connected."));

}

}

程序入口:

#include 

#include "productviewerdialog.h"

//主函数

intmain(intargc,char** argv){

QApplication app(argc, argv);

ProductViewerDialog dlg;

dlg.show();

returnapp.exec();

}

d627a01a12ba2c93b1221dbcff5c0fc5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值