我正在尝试在我的Qt5项目之一中使用ODBC驱动程序。
我编译了QODBC
驱动程序,并将驱动程序dll复制到QtQt5.0.05.0.0msvc2010pluginssqldrivers文件夹中。
当我尝试以下代码时:
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
我得到以下错误:
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3
如果我尝试加载QODBC3
,也会遇到相同的错误。
即使QODBC
和QODBC3
驱动存在,Qt仍然无法加载QODBC
驱动。
我用的是Windows 7(64位)电脑。
有人遇到过这样的错误吗?有什么问题的线索吗?
我发现这个问题是由于编译odbc sql驱动程序时使用的不正确的Visual studio版本引起的。
我的电脑里有VS 2008和VS 2010。我的Qt5.0使用的是VS2010。但是当我编译odbc sql驱动程序时,我使用了VS2008。这就造成了问题。
Qt能够检测到sql odbc驱动程序,但无法加载它。
我通过使用VS2010重新编译odbc驱动程序来解决这个问题,odbc驱动程序工作得很好。
以下是在Qt 5.0 中编译和使用sql odbc驱动程序的步骤- 打开qt命令提示符
- 这可以在Qt 的开始菜单中找到
设置vc++环境变量:
- 要做到这一点,cd到C:Program Files (x86)Microsoft Visual Studio 10.0VC文件夹,并运行vcvarsall.bat
需要注意的重要一点是,编译驱动程序时使用与Qt使用的Visual Studio相同的版本。cd into Qt5.0.05.0.0Srcqtbase Src pluginssqldriversodbc源文件夹
qmake odbc.pro
nmake
- 如果运行正常,则编译后的qsqlodbc.dll和qsqlodbcd.dll .dll . exe文件将被加载将在Qt5.0.05.0.0Srcqtbasepluginssqldrivers文件夹中提供。
- 在部署基于qt的应用程序时,需要将qsqlodb .dll(发布版本)复制到sqldrivers文件夹中。