我已经浪费了大约6个小时的时间,试图让MySQL在使用网络上的各种指示后使用Qt。我现在想要切断手腕!
有没有人对如何将QMYSQL驱动程序安装到Qt中有简单而详尽的解释?
我有Mac 10.6,我是初学者n00b。
我的心底会感激你的帮助!
萨纳。
当我执行grep时,我得到以下文件,所以在这些只是为了踢,我将libqsqlmysql.dylib复制到所有文件夹中,但我仍然无法编译...我得到一个错误说{ {1}}
QSqlDatabase: QMYSQL driver not loaded
这是我的.pro文件
/Library/Application Support/DivX/QtPlugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Assistant.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Designer.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Desktop/Qt/4.8.0/gcc/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Desktop/Qt/4.8.0/gcc/plugins/sqldrivers/libqsqlite_debug.dylib
/Users/pfn368/QtSDK/Desktop/Qt/474/gcc/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Desktop/Qt/474/gcc/plugins/sqldrivers/libqsqlite_debug.dylib
/Users/pfn368/QtSDK/Madde/sysroots/harmattan-arm-sysroot/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so
/Users/pfn368/QtSDK/Madde/sysroots/harmattan-nokia-arm-sysroot/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so
/Users/pfn368/QtSDK/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim/usr/lib/qt4/plugins/sqldrivers/libqsqlite.so
/Users/pfn368/QtSDK/Qt Creator.app/Contents/MacOS/qmlpuppet.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Qt Creator.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/QtSources/4.8.0/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/QtSources/4.8.0/plugins/sqldrivers/libqsqlite_debug.dylib
/Users/pfn368/QtSDK/Simulator/Application/simulator.app/Contents/PlugIns/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Simulator/Qt/gcc/plugins/sqldrivers/libqsqlite.dylib
/Users/pfn368/QtSDK/Simulator/Qt/gcc/plugins/sqldrivers/libqsqlite_debug.dylib
我的包含
QT += sql core gui\
network
TARGET = mini-stock-exchange
TEMPLATE = app
SOURCES += ./src/main.cpp\
./src/mainwindow.cpp
HEADERS += ./header/mainwindow.h
FORMS += ./ui/mainwindow.ui
调用数据库的代码
#include "./header/mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QFile>
#include <QtSql/QSqlError>
#include <qsqldatabase.h>
#include <QtCore>
#include <QtSql>
答案 0 :(得分:3)
来自Mac Homebrew的Qt 4软件包有一个选项可以安装mysql-drivers作为Qt插件默认(这不是默认选项,这就是你错过这个的原因)。
按照此处所述下载并安装Mac OS X Homebrew软件:http://brew.sh。
安装自制软件后,删除以前的Qt4安装。
如果您使用brew安装它,只需在终端上键入:
$ brew remove qt4
使用mysql支持运行安装它:
$ brew install qt4 --with-mysql
每次你需要在brew中安装一些包含一些选项的软件包但你不知道支持的选项只需输入:
$ brew options FORMULA_NAME
它将显示给定公式的所有可用构建选项。
答案 1 :(得分:2)
首先下载Qt SDK源代码和一个版本的mysql服务器源代码,然后将它们解压缩。
为MySQL的lib文件创建符号链接:
sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.dylib
sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient_r.dylib
sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
sudo ln -s /Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient_r.18.dylib
将cd
提取到您提取的Qt SDK后,进入文件夹/Users/simon/Downloads/qt-everywhere-opensource-src-4.8.4/src/plugins/sqldrivers/mysql
构建库:
qmake -spec macx-g++ -o Makefile "INCLUDEPATH+=/Users/simon/Downloads/mysql-5.6.11-osx10.7-x86_64/include" "LIBS+=-L/usr/lib -lmysqlclient_r" mysql.pro
make
mv libqsqlmysql_debug.dylib libqsqlmysql.dylib
cp -R libqsqlmysql.dylib /Developer/Applications/Qt/plugins/sqldrivers/
之后你应该能够使用QMYSQL插件。使用这行代码检查库是否已正确加载(将其放在一些构造函数中,以便在启动应用程序后立即输出):
qDebug() << QCoreApplication::libraryPaths();
qDebug() << QSqlDatabase::drivers();
例如我的输出现在看起来像这样:
("/Developer/Applications/Qt/plugins", "/Users/simon/Coding/qt4c/build-SQLtable-Desktop-Debug/SQLtable.app/Contents/MacOS")
("QSQLITE", "QMYSQL3", "QMYSQL", "QODBC3", "QODBC", "QPSQL7", "QPSQL")
答案 2 :(得分:0)
首先,您需要来自互联网的Qt无处不在的开源包。我不知道你正在运行什么版本的Qt,但你需要与你的核心安装相同的版本。
其次,你进入源包并浏览插件,直到找到sql驱动程序和mysql插件。在这个阶段,请确保您知道您的mysql库和包含的路径,因为您需要它们。
第三,修改mysql插件的.pro并将你的MySql包含路径添加到INCLUDEPATH + =并将libs添加到.... LIBS + =
第四,在.pro上运行qmake生成一个Makefile,然后制作make文件,你会看到一些非常小的.dylib文件,眼睛里充满喜悦。
第五,有趣的部分,你需要找到其他插件的位置,这会因系统而异。找到它们的最快方法是终端类型'sudo find / | grep libqsqlite'它会给你它的位置,那就是你的Qt sqldrivers插件目录。将刚刚构建的dylib复制到那里。
那应该这样做。它对我来说在很多构建和重建方面都很有用。