最近打算用Qt做个传感器压力测试程序,测试结果保存到MySQL中。
开发环境:
1. Qt版本
Qt Creator 4.8.0
Based on Qt 5.12.0 (MSVC 2015, 32 bit)
......
2. Qt C++编译器和生成可执行文件的位数
Qt\Qt5.12.0\5.12.0\mingw73_64
所以,我认为编译器是64位的。
并且用notepad++打开编译后的可执行文件,发现有“This program cannot be run in DOS mode.”,所以,可执行文件是64位的。
3. MySQL的版本和位数
第一种方式
D:\MySQL\MySQLServer8.0\bin> .\mysql.exe -V
D:\MySQL\MySQLServer8.0\bin\mysql.exe Ver 8.0.14 for Win64 on x86_64 (MySQL Community Server - GPL)
第二种方式
mysql> show variables like '%version_%';
......
'version_compile_machine', 'x86_64'
'version_compile_os', 'Win64'
......
所以MySQL也是64位的。
问题描述:
当运行QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");时,运行程序输出显示:
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
实际上,单步调试到这一行时,完整信息如下:
`C:\Program Files (x86)\sogoupinyin\9.3.0.2927\Resource.dll': Shared library architecture i386 is not compatible with target architecture i386:x86-64.
`C:\Program Files (x86)\sogoupinyin\9.3.0.2927\Resource.dll': Shared library architecture i386 is not compatible with target architecture i386:x86-64.
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7
不太懂为什么和搜狗拼音有什么关系。
尝试过的办法:
1. 网上的办法,基本上是将MySQL的libmysql.dll文件拷贝到编译器的bin目录下,我试过,
即将 MySQL\MySQLServer8.0\lib\libmysql.dll拷贝到Qt\Qt5.12.0\5.12.0\mingw73_64\bin\目录中,
问题依然存在。
2. 我又尝试安装mariadb-10.3.12-win32和mariadb-10.3.12-win64,分别将libmariadb.dll拷贝到
Qt\Qt5.12.0\5.12.0\mingw73_64\bin\下,并改名为libmysql.dll,还是不行。
请问大家,是不是Qt5.12与MySQL8.0有兼容上的问题,或者其他?
下面该怎么办呢?
期待关注和您的意见!