• 9105阅读
  • 4回复

QT 生成 mysql 驱动疑问 [复制链接]

上一主题 下一主题
离线achilles7
 
只看楼主 倒序阅读 楼主  发表于: 2011-05-19
一、开发环境:
操作系统:windows XP
Qt版本: 4.5
Qt安装目录:D:\devProgram\Qt
mysql版本: 4.1
mysql安装目录:D:\mysql41\lib\opt。(安装时选择了全部组件)
问题
       下面标红处 mysql.pro 哪来的?
        运行dlltool命令:dlltool -k -d libmysql.def -l libmysql.a后生成的 libmysql.a 的大小为 0 KB?

二、编译mysql驱动程序的过程:
1、用mingw-utils包中的reimp命令生成 libmysql.a 文件。
   注:mingw-utils 下载地址:http://www.qtcn.org/download/mingw-utils-0.3.tar.gz
   下载后解压缩,reimp命令在bin目录里。
   成生过程:
   1)、进入mysql安装目录: cd D:\mysql41\lib\opt
   2)、运行 reimp命令: reimp -d libmysql.lib
   3)、运行dlltool命令:dlltool -k -d libmysql.def -l libmysql.a
2、编译mysql驱动:
  1)、进入 qt 插件中的sqlsrivers目录:
        cd D:\devProgram\Qt\2009.03\qt\src\plugins\sqldrivers\mysql
  2)、运行qmake命令:
        qmake -o Makefile "INCLUDEPATH+=D:\mysql41\include" "LIBS+=D:\mysql41\lib\opt\libmysql.a"  mysql.pro
  3)、运行mingw32包里的 mingw32-make命令。(注不是make命令,也不是nmake命令。)
     注:如果mingw32-make命令运行出错,请把mingw32\bin加到path 环境变量中。
  4)、将生成的libqsqlmysqld4.a,qsqlmysqld4.dll 两个文件拷贝到 D:\devProgram\Qt\2009.03\qt\plugins\sqldrivers 目录下。
离线simplebelief
只看该作者 1楼 发表于: 2011-06-01
编译驱动总是编译不过,用nmake命令就报:
NMAKE : fatal error U1073: don't know how to make 'c:/Program\' Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio\VC98\bin\NMAKE.EXE"' : return code '0x2'

用make命令(我是将\mingw\bin目录下mingw32-make.exe拷贝了一份改名为make.exe)就会有一堆输出:
......
c:\Program Files\Microsoft Visual Studio\VC98\include/xstring:94: error: '_Len'
was not declared in this scope
c:\Program Files\Microsoft Visual Studio\VC98\include/xstring:95: error: '_Ptr'
was not declared in this scope
c:\Program Files\Microsoft Visual Studio\VC98\include/xstring:96: error: there a
re no arguments to '_Eos' that depend on a template parameter, so a declaration
of '_Eos' must be available
In file included from ..\..\..\..\include/QtCore/../../src/corelib/global/qt_win
dows.h:63,
                 from ..\..\..\..\include/QtCore/qt_windows.h:1,
                 from ../../../sql/drivers/mysql/qsql_mysql.h:49,
                 from main.cpp:44:
c:\Program Files\Microsoft Visual Studio\VC98\include/windows.h: At global scope
:
c:\Program Files\Microsoft Visual Studio\VC98\include/windows.h:30: error: expec
ted unqualified-id before end of line
c:\Program Files\Microsoft Visual Studio\VC98\include/windows.h:30: error: expec
ted '}' before end of line
c:\Program Files\Microsoft Visual Studio\VC98\include/windows.h:30: error: expec
ted declaration before end of line
make[1]: *** [tmp/obj/debug_shared/main.o] Error 1
make[1]: Leaving directory `C:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql'
make: *** [debug-all] Error 2
离线simplebelief
只看该作者 2楼 发表于: 2011-06-01
终于成功了,分析原因:
从报错信息来看有很多关于c:\Program Files\Microsoft Visual Studio\VC98\include目录的信息,怀疑我机器上安装有VC6的问题,Qt库中有很多与VC中同名的代码文件,而环境变量中也设置了c:\Program Files\Microsoft Visual Studio\VC98\include路径,并且比Qt路劲靠前。

我简单的讲VC98那个目录改一下名,让编译的时候找不到该目录,编译就通过了,而且现在连接数据库正常了...
离线kunhuang00
只看该作者 3楼 发表于: 2011-06-23
D:\Qt\MySQL\MySQL\bin>reimp -d libmysql.lib  
'reimp' 不是内部或外部命令,也不是可运行的程序或批处理文件。
而且我的D:\Qt\MySQL\MySQL\bin下面只有libmysql.dll库,没有libmysql.lib库
我的mysql是装在D:\QT下的,运行不过,请高手指点一下,谢!
离线XChinux

只看该作者 4楼 发表于: 2011-06-23
引用第3楼kunhuang00于2011-06-23 13:52发表的  :
D:\Qt\MySQL\MySQL\bin>reimp -d libmysql.lib  
'reimp' 不是内部或外部命令,也不是可运行的程序或批处理文件。
而且我的D:\Qt\MySQL\MySQL\bin下面只有libmysql.dll库,没有libmysql.lib库
我的mysql是装在D:\QT下的,运行不过,请高手指点一下,谢!

上mysql官网下载mysql的开发包。里面包含include、lib目录的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个