Qt mysql驱动编译

我的目录结构:

<相关>安装路径不要有空格和点

5、用cmd进入D:\Qt\4.8.4\src\plugins\sqldrivers\mysql or D:\Qt\Qt5.0.2\5.0.2\Src\qtbase\src\plugins\sqldrivers\mysql

以上目录起码得看到mysql.pro吧

(1)执行cmd命令:reimp -d E:/qt/mysql/lib/opt/libmysql.lib

生成LIBMYSQL.def文件

(2)执行cmd命令:dlltool -k -d libmysql.def -l libmysql.a

将LIBMYSQL.def转成了libmysql.a文件

(3)执行cmd命令:qmake -o Makefile "INCLUDEPATH+=E:/qt/mysql/include""LIBS+=E:/qt/mysql/lib/opt/LIBMYSQL.a" mysql.pro

生成makefile,makefile.debug,makefile.release

注意:如果系统安装有vc,那么打开以上三个文件夹,将有关vc的东西全部删除,否则以下编译出错

6、打开mysql.pro文件添加以下语句(注意反斜杠的写法)

  1. INCLUDEPATH += E:/Qt/MySQL/include  //Mysql目录
  2. LIBS += E:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/libmysql.a 

7、执行cmd命令:ming32-make

8、完成mysql驱动的编译。

  1. E:\Qt\2010.05\qt\plugins\sqldrivers将生成以下两个文件:  
  2. qsqlmysql4.dll  
  3. qsqlmysqld4.dll 

这两个文件则是mysql驱动库了。

9、测试工程

.pro文件增加以下三行

  1. QT       += sql      *******这行必须加  
  2.  
  3. INCLUDEPATH += E:/Qt/MySQL/include       ********这行不加可能也行  
  4. LIBS += E:/Qt/2010.05/qt/src/plugins/sqldrivers/mysql/libmysql.a     ********这行不加可能也行  

.cpp文件<部分源码>

  1. QSqlDatabase Connect=QSqlDatabase::addDatabase("QMYSQL");  
  2. Connect.setDatabaseName("mydata");//注意数据库名<需要自己在mysql下先建立,如何建立查资料啊> 
  3. Connect.setHostName("127.0.0.1");//本地访问  
  4. Connect.setPort(3306);  
  5. Connect.setUserName("root");//用户名  
  6. Connect.setPassword("12345");//注意密码<需要提前在mysql下设置吧> 
  7. if(Connect.open())  
  8. {  
  9.     qDebug()<<"MySql right!!";  
  10.   

以上是注意点其他按上面做就行


<think>我们正在解决QTMySQL驱动编译时出现的错误:Nomoduleclaimsplugintype'sqldrivers'用户提供的引用中并没有直接关于QT的,但是我们可以借鉴引用中关于编译错误的解决思路(如检查依赖、安装库文件等)分析问题:该错误通常发生在Qt编译MySQL插件时,表明插件没有正确编译Qt找不到编译好的插件。可能的解决方案步骤:1.确保已经安装了MySQL的开发文件(头文件和库)。在Linux下通常是libmysqlclient-dev,Windows下需要MySQL的安装路径中包含include和lib。2.Qt源码中,进入mysql驱动的源码目录(如qtbase/src/plugins/sqldrivers/mysql),使用qmake和make进行编译。3.编译时,确保qmake能够找到MySQL的库和头文件。有时需要通过qmake的INCLUDEPATH和LIBS指定路径。4.编译成功后,将生成的插件(如libqsqlmysql.so或qsqlmysql.dll)复制到Qt安装目录下的plugins/sqldrivers目录中。5.设置环境变量(如Windows下的PATH)使其能够找到MySQL的客户端库(libmysql.dll)。根据上述思路,给出详细步骤:</think> ### 解决QT MySQL驱动编译错误:`No module claims plugin type 'sqldrivers'` 该错误表明Qt编译MySQL插件时无法识别`sqldrivers`模块类型,通常由MySQL依赖缺失或Qt配置不当引起。以下是系统级解决方案: #### **解决步骤** 1. **安装MySQL开发依赖** - **Linux**:安装`libmysqlclient-dev` ```bash sudo apt-get install libmysqlclient-dev # Debian/Ubuntu sudo yum install mysql-devel # CentOS/RHEL ``` - **Windows**:从[MySQL官网](https://dev.mysql.com/downloads/installer/)下载完整安装包,确保包含**C头文件**和**库文件**(安装时勾选"Development Components")。 2. **验证MySQL路径配置** 在Qt安装目录的`mkspecs`文件夹中找到对应平台的配置文件(如`win32-g++/qmake.conf`),添加MySQL路径: ```makefile INCLUDEPATH += "C:/MySQL/include" # 替换为实际路径 LIBS += -L"C:/MySQL/lib" -lmysql ``` 3. **重编译MySQL驱动** 使用Qt源码重新编译插件: ```bash cd $QTDIR/qtbase/src/plugins/sqldrivers qmake -- MYSQL_PREFIX="C:/MySQL" # 指定MySQL路径 make sub-mysql ``` 4. **检查插件输出位置** 确保生成的插件文件(`qsqlmysql.dll/.so`)被正确复制到: ``` Qt/6.6.0/gcc_64/plugins/sqldrivers # Linux示例 ``` 5. **环境变量配置** - **Windows**:将MySQL的`lib`目录(如`C:\MySQL\lib`)添加到系统`PATH` - **Linux**:添加库路径到`LD_LIBRARY_PATH`: ```bash export LD_LIBRARY_PATH=/usr/lib/mysql:$LD_LIBRARY_PATH ``` #### **关键验证点** - 执行`qmake -query`检查Qt安装路径是否包含在`QT_INSTALL_PLUGINS`中 - 使用`ldd qsqlmysql.so`(Linux)或**Dependency Walker**(Windows)验证驱动是否链接正确的MySQL库文件 - 检查Qt编译日志中是否出现`mysql.h not found`(表明路径配置错误)[^1][^2] #### **深层原理解析** Qt的SQL驱动采用插件架构。当出现`No module claims plugin type`时: 1. Qt的**元对象系统**(MOC)未识别到插件声明的`Q_PLUGIN_METADATA`宏 2. **依赖库加载失败**导致插件初始化被跳过 3. Qt插件加载器在`sqldrivers`目录未发现有效`.dll/.so`文件 (可通过设置`QT_DEBUG_PLUGINS=1`环境变量查看详细加载日志)[^3] #### **备选方案** 若仍失败,考虑: - 使用Qt官方预编译驱动(部分版本提供) - 改用**QMYSQL3**驱动名(兼容旧版API) - 编译Qt源码时直接集成MySQL支持: ```bash ./configure -sql-mysql --with-mysql-lib=/usr/lib/mysql ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值