mysql 编译驱动 mingw32-make main.o_Qt中编译mysql驱动程序及解… | 学步园

一、开发环境:

操作系统:windows XP

Qt版本: 4.5

Qt安装目录:D:devProgramQt

mysql版本: 4.1

mysql安装目录:D:mysql41libopt。(安装时选择了全部组件)

二、编译mysql驱动程序的过程:

1、用mingw-utils包中的reimp命令生成 libmysql.a文件。

下载后解压缩,reimp命令在bin目录里。

成生过程:

1)、进入mysql安装目录: cdD:mysql41libopt

2)、运行 reimp命令: reimp -dlibmysql.lib

3)、运行dlltool命令:dlltool -k-d libmysql.def -l libmysql.a

2、编译mysql驱动:

1)、进入 qt 插件中的sqlsrivers目录:

cd D:devProgramQt2009.03qtsrcpluginssqldriversmysql

2)、运行qmake命令:

qmake -o Makefile "INCLUDEPATH+=D:mysql41include""LIBS+=D:mysql41liboptlibmysql.a" mysql.pro

3)、运行mingw32包里的mingw32-make命令。(注不是make命令,也不是nmake命令。)

注:如果mingw32-make命令运行出错,请把mingw32bin加到path环境变量中。

4)、将生成的libqsqlmysqld4.a,qsqlmysqld4.dll两个文件拷贝到 D:devProgramQt2009.03qtpluginssqldrivers目录下。

三、编写了一个简单的SQL程序:

int main(int argc,

char*argv[])

{

QApplication a(argc, argv);

QSqlDatabase db =

QSqlDatabase::addDatabase("QMYSQL");

db.setDatabaseName("test");

db.setUserName("root");

db.setPassword("root");

bool ok = db.open();

std::cout << "db.open(): " <

}

运行时提示:

QSqlDatabase: QMYSQL drivernot loaded

QSqlDatabase: availabledrivers: QSQLITE QODBC3 QODBC

说明mysql的驱动没有加载上。

四、解决办法:

将mysql的dll文件所在的目录加到环境变量PATH中:

Path= ...;D:mysql41libopt;

重新运行程序,提示:

db.open(): 1

说明数据库已经连上。

参考links:

操作日志:

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

D:mysql41>cd D:mysql41libopt

D:mysql41libopt>D:devProgramQtmingw-utils-0.3binreimp-d libmysql.lib

D:mysql41libopt>D:devProgramQt2009.03mingwbindlltool-k -d libmysql.def -l libmysql.a

D:mysql41libopt>cdD:devProgramQt2009.03qtsrcpluginssqldriversmysql

D:devProgramQt2009.03qtsrcpluginssqldriversmysql>qmake-o Makefile "INCLUDEPATH+=D:mysql41include""LIBS+=D:mysql41liboptlibmysql.a" mysql.pro

D:devProgramQt2009.03qtsrcpluginssqldriversmysql>nmake

Microsoft (R) Program MaintenanceUtility Version6.00.8168.0

Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

NMAKE -f Makefile.Debug

Microsoft (R) Program MaintenanceUtility Version6.00.8168.0

Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE-DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII-DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LI

B -DQT_CORE_LIB -DQT_THREAD_SUPPORT -I"........includeQtCore"-I"........includeQtSql" -I"........include"-I"d:mysql41include" -I"........includ

eActiveQt" -I"debug" -I"........mkspecsdefault" -odebugmain.o main.cpp

'g++' 不是内部或外部命令,也不是可运行的程序

或批处理文件。

NMAKE : fatal error U1077: 'g++' : return code '0x1'

Stop.

NMAKE : fatal error U1077: '"D:Microsoft VisualStudioVC98binNMAKE.EXE"' : return code '0x2'

Stop.

D:devProgramQt2009.03qtsrcpluginssqldriversmysql>mingw32-make.exe

mingw32-make.exe -f Makefile.Debug

mingw32-make.exe[1]: Entering directory`D:/devProgram/Qt/2009.03/qt/src/plugins/sqldrivers/mysql'

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE-DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII-DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB-DQT_C

ORE_LIB -DQT_THREAD_SUPPORT -I"........includeQtCore"-I"........includeQtSql" -I"........include"-I"d:mysql41include" -I"........includeActive

Qt" -I"debug" -I"........mkspecsdefault" -o debugmain.omain.cpp

D:/devProgram/Qt/2009.03/qt/binmoc.exe -DUNICODE-DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII-DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB-DQT_CORE_LI

B -DQT_THREAD_SUPPORT -I"........includeQtCore"-I"........includeQtSql" -I"........include"-I"d:mysql41include" -I"........includeActiveQt" -I

"debug" -I"........mkspecsdefault" -D__GNUC__ -DWIN32......sqldriversmysqlqsql_mysql.cpp -odebugqsql_mysql.moc

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE-DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII-DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB-DQT_C

ORE_LIB -DQT_THREAD_SUPPORT -I"........includeQtCore"-I"........includeQtSql" -I"........include"-I"d:mysql41include" -I"........includeActive

Qt" -I"debug" -I"........mkspecsdefault" -o debugqsql_mysql.o......sqldriversmysqlqsql_mysql.cpp

In file included from......sqldriversmysqlqsql_mysql.cpp:1476:

debug/qsql_mysql.moc:72:26: warning: no newline at end offile

D:/devProgram/Qt/2009.03/qt/binmoc.exe -DUNICODE-DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII-DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB-DQT_CORE_LI

B -DQT_THREAD_SUPPORT -I"........includeQtCore"-I"........includeQtSql" -I"........include"-I"d:mysql41include" -I"........includeActiveQt" -I

"debug" -I"........mkspecsdefault" -D__GNUC__ -DWIN32......sqldriversmysqlqsql_mysql.h -odebugmoc_qsql_mysql.cpp

g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE-DQT_LARGEFILE_SUPPORT -DQT_NO_CAST_TO_ASCII-DQT_NO_CAST_FROM_ASCII -DQT_DLL -DQT_PLUGIN -DQT_SQL_LIB-DQT_C

ORE_LIB -DQT_THREAD_SUPPORT -I"........includeQtCore"-I"........includeQtSql" -I"........include"-I"d:mysql41include" -I"........includeActive

Qt" -I"debug" -I"........mkspecsdefault" -odebugmoc_qsql_mysql.o debugmoc_qsql_mysql.cpp

windres -i qsqlmysqld_resource.rc -odebugqsqlmysqld_resource_res.o --include-dir=.

g++ -enable-stdcall-fixup -Wl,-enable-auto-import-Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -shared-Wl,--out-implib,debuglibqsqlmysqld4.a -o debugqsqlmysqld4

.dll debug/main.o debug/qsql_mysql.odebug/moc_qsql_mysql.o -L"d:devProgramQt2009.03qtlib" debugqsqlmysqld_resource_res.oD:mysql41liboptlibmysql.a -lQtSq

ld4 -lQtCored4

Creating library file: debuglibqsqlmysqld4.a

mingw32-make.exe[1]: Leaving directory`D:/devProgram/Qt/2009.03/qt/src/plugins/sqldrivers/mysql'

D:devProgramQt2009.03qtsrcpluginssqldriversmysql>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值