所以我尝试在Windows上为qt 5.7构建MySQL插件。我设法通过执行以下操作生成qmysqld.dll和qmysql.dll
1 )下载Qt源文件
2 )在链接mySql \ include和mySql \ libmysql.lib的同时,导航到QTDIR\qtbase\src\plugins\sqldrivers
并在qsqldriver.pro文件上运行qmake。具体来说,我运行了以下命令:
qmake "INCLUDE+=mysql-5.7.17-win32\include" "LIBS+=C:\mysql-5.7.17-win32\lib\libmysql.lib" -o MakeFile mysql.pro
3 )运行mingw32-make
来编译项目。
4 )然后我将qmysqld.dll和qmysql.dll从QTDIR\plugins\sqldrivers
移到ACTUALQTINSTALLATION\mingw53_32\plugins\sqldrivers
文件已经存在,需要更换。
这是我正在尝试运行的测试代码。
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "my_sql_db");
db.setHostName("localhost");
db.setDatabaseName("test");
db.setUserName("root");
db.setPassword("");
if(!db.open())
qDebug() << db.lastError().text();
产生以下错误,就像我构建插件之前一样。
"Driver not loaded Driver not loaded"
Driver: ("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
我能想到的唯一一件事就是我在qsqlmysqld.dll上运行了DependencyWalker程序,并且它说LIBMYSQL.dll,QT5CORED.dll和QT5SQLD.dll缺失,并且几乎所有其他依赖都是针对x64位的体系结构(与qsqlmysql.dll相反,即32)。我对这意味着什么知之甚少,这是我第一次使用DependencyWalker,但是这表明我已经以某种方式将dll构建为32位并需要将其重新编译为64位并且应该解决这个问题?
对此非常困惑,我一直试图让这个开启和关闭一个多月了。