• 8745阅读
  • 3回复

编译 Qt 4.6.1的 MySQL 驱动 @ Windows [复制链接]

上一主题 下一主题
离线dd970512
 
只看楼主 倒序阅读 楼主  发表于: 2010-02-26
— 本帖被 XChinux 执行加亮操作(2010-02-26) —
先声明:本文并非原创,是我根据网上的文章修改而来。但使用Qt Creator来编译是我自己尝试的,网上的全是命令行下的。
一 开发环境:
操作系统:windows XP
Qt版本: 4.6.1(qt-sdk-win-opensource-2010.01),自带mingw。
     Qt安装目录:D:\Qt
     mysql版本: 5.0.22(mysql-noinstall-5.0.22-win32)
     mysql安装目录:F:\mysql\5.0.22.SDK\lib\opt。
二 下载 mingw-utils:
下载地址:http://www.qtcn.org/download/mingw-utils-0.3.tar.gz
解压后将其中bin目录下的 reimp.exe 放到 Qt 自带的 MinGW 的 bin (D:\Qt\2010.01\mingw\bin)目录下。(只是为了集中一点,其实随便放到哪个目录都行)
注:这一步是为第三步转换LIB做准备。
三 转换libmysql.lib :
MySQL 自带的 .lib 文件是为 VC 准备的,所以先要生成 MinGW 能认识的 .a 文件,在命令行模式输入:
F:\mysql\5.0.22.SDK\lib\opt D:\Qt\2010.01\mingw\bin \reimp.exe libmysql.lib
操作成功的话会生成 LIBMYSQL.def 和 liblibmysql.a。
网上的方法一般是用 reimp –d 生成 .def 文件,再用 dlltool 生成 .a 文件,后者可以指定文件名,但我试下来最终得到的 .a 文件用起来并没啥不同。
四 编译 Qt 的 MySQL 驱动:
用记事本打开D:\Qt\2010.01\qt\src\plugins\sqldrivers\mysql\ mysql.pro文件,在第二行加入:
INCLUDEPATH+=F:\mysql\5.0.22.SDK\include
LIBS+=F:\mysql\5.0.22.SDK\lib\opt\liblibmysql.a
如果没有这两行会出现找不到mysql.h的错误。保存后,用Qt Creator打开刚才保存的工程文件,编译。OK!到D:\Qt\2010.01\qt\plugins\sqldrivers目录下看看是不是多了如下几个文件:
libqsqlmysql4.a
libqsqlmysqld4.a
qsqlmysql4.dll
qsqlmysqld4.dll
五 使用MYSQL
    将F:\mysql\5.0.22.SDK\lib\opt\libmysql.dll复制到运行程序所在目录或者system32目录。
简单示例:
#include <QtCore/QCoreApplication>

#include <qtsql>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    qDebug() << QSqlDatabase::drivers();

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    qDebug() << db.lastError();

    db.setHostName("127.0.0.1");
    db.setDatabaseName("wea800");
    db.setUserName("root");
    db.setPassword("");
    db.setPort(3306);
    bool bOk = db.open();
    db.close();
    return a.exec();
}

注:如果用Qt Creator建立工程时没有选择QTSQL选项,请手动在工程文件中加入:
QT += sql
完整的.pro文件示例:
#-------------------------------------------------
#
# Project created by QtCreator 2010-02-26T11:32:55
#
#-------------------------------------------------
QT       += sql
QT       -= gui

TARGET = testmysql
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app
SOURCES += main.cpp
离线hys97

只看该作者 1楼 发表于: 2010-03-16
顶楼主一个,很好很详细!
离线ws01000101

只看该作者 2楼 发表于: 2010-03-24
楼主,问个问题下,为什么我只生成了LIBMYSQL.def ,而没有liblibmysql.a,很困恼我啊。qt和mysql的连接弄了很久还是没有成功。郁闷中
离线lishiyong110
只看该作者 3楼 发表于: 2010-03-25
先顶下 有机会再弄下
静下心来学习
快速回复
限100 字节
 
上一个 下一个