Qt5.6.0(32位)编译SQLServer驱动(ODBC)(vs2013)
环境:
- win7 64
- VS 2013
- Qt 5.6.0(32 msvc)
- Qt add in 1.2.5
测试是否支持ODBC驱动:
Qt中SQL Server的驱动名是ODBC(Qt5.2连接SQLServer2008)。
可以到C:\Qt\Qt5.6.0\5.6\msvc2013\plugins\sqldrivers
(改成自己的目录)查看是否有qsqlodbc.dll和qsqlodbcd.dll,或者用如下程序进检测:
qDebug() << "Available drivers:";
QStringList drivers = QSqlDatabase::drivers();
foreach(QString driver, drivers)
qDebug() << "\t" << driver;
QSqlDatabase dbc = QSqlDatabase::addDatabase("QODBC");
qDebug() << "ODBC driver valid?" << dbc.isValid();
结果:
Available drivers:
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QPSQL"
"QPSQL7"
列表中没有ODBC。
没有ODBC驱动怎么办?
不要怕,可以自己编译ODBC,按照以下几步来:
- 在
C:\Qt\Qt5.6.0\5.6\Src\qtbase\src\plugins\sqldrivers\odbc
目录下,打开命令行(按shift+右键),执行qmake odbc.pro
- 在
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts
目录下打开VS2013 x86 本机工具命令提示
,进入C:\Qt\Qt5.6.0\5.6\Src\qtbase\src\plugins\sqldrivers\odbc
目录,执行nmake
命令 - 在
C:\Qt\Qt5.6.0\5.6\Src\qtbase\plugins\sqldrivers
目录下会生成qsqlodbc.dll
和qsqlodbcd.dll
。 - 将生成的dll拷贝到
C:\Qt\Qt5.6.0\5.6\msvc2013\plugins\sqldrivers
- 完成
注意:
没有Qt源码
QT5.6 编译SQLServer驱动提示进入
C:\Qt\Qt5.6.0\5.6\Src\qtbase\src\plugins\sqldrivers\odbc
,但是我的C:\Qt\Qt5.6.0\5.6
下面只有msvc2013文件夹,没有Src
文件夹,该怎么办?解决方法:重新安装qt5.6,在选择组件的时候,把Source Coomponents勾选上。
vs2013的命令行要用正确
在
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts
有很多的命令行快捷方式,不能乱用。这里编译的是32位的Qt的dll,如果用VS2013 开发人员命令提示
进行nmake
会提示如下错误:
“模块计算机类型“x64”与目标计算机类型“X86”冲突”。
重新运行前面提到的程序结果如下:
Available drivers:
"QSQLITE"
"QMYSQL"
"QMYSQL3"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7"
可见已经有SQLServer驱动(ODBC)了。
本文来自博客园,作者:ssh_alitheia,转载请注明原文链接:https://www.cnblogs.com/shanchuan/p/8150292.html