0

我正在尝试将 Qt 与 QOCI 一起使用(实际上,以及其他插件),但由于某种原因我不能。这是我所做的和结果:

1- http://doc.qt.nokia.com/latest/sql-driver.html#qoci 插件搭建成功。

2- 将插件调试和发布 dll 和 lib 文件复制到 plugins/sqldrivers 和 OCI.DLL 到 %WINDIR%\system32(plugins/sqldrivers 是其他插件如 QPSQL 和 QMYSQL 所在的位置)

3- QSqlDatabase::isDriverAvailable(QOCI) 返回 false,它为 QMYSQL 和 QPSQL 返回 true。我对 QMYSQL 和 QPSQL 做了同样的事情

4- QStringList qsl = QSqlDatabase::drivers(); 返回的字符串列表中没有 QOCI。但是有 QMYSQL、QPSQL 和其他一些。

附加检查:使用依赖 walker 打开 qsqloci4.dll,无法找到 3 个 dll:1-QtCore4.dll 2-QtSql4.dll 3-MSVSC80.dll 但是,使用依赖 walker 打开 qsqlpsql.dll 时也无法找到它们。我相信加载 dll 并没有因为 qsqloci4.dll 的依赖而失败。但是,仍然欢迎任何想法。

消息

LoadLibrary(_T("C:\\QtSDK\\Desktop\\Qt\\4.7.3\\msvc2005\\plugins\\sqldrivers\\qsqloci4.dll");

LoadLibrary(_T("C:\\QtSDK\\Desktop\\Qt\\4.7.3\\msvc2005\\plugins\\sqldrivers\\qsqlocid4.dll");

失败!!!请注意,这两个文件都存在于给定路径中。

我相信由于这个错误,Qt 也无法加载插件。现在的问题有点不同,但是为什么 LoadLibrary 在这种情况下会失败?有任何想法吗?

提前致谢。

4

2 回答 2

0

您需要在包含您的 exe 的目录中创建一个名为 sqldrivers 的文件夹。将您正在使用的所有 SQL 驱动程序 DLL 放在那里(对于 oracle oci.dll、ociw32.dll、oraociei12.dll、oraons.dll、qsqloci4.dll、qsqlocid4.dll)。

于 2013-11-21T09:06:06.037 回答
0

如何在 Windows 上构建插件

从 Oracle 客户端安装 CD 中选择 Oracle 客户端安装程序中的选项“程序员”就足以构建插件。

如下构建插件(这里假设Oracle客户端安装在C:\oracle):

set INCLUDE=%INCLUDE%;c:\oracle\oci\include
set LIB=%LIB%;c:\oracle\oci\lib\msvc
cd %QTDIR%\src\plugins\sqldrivers\oci
qmake -o Makefile oci.pro
nmake

如果您没有使用 Microsoft 编译器,请将上面一行中的 nmake 替换为 make。

运行应用程序时,您还需要将 oci.dll 路径添加到 PATH 环境变量中:

set PATH=%PATH%;c:\oracle\bin
于 2011-07-27T14:10:02.190 回答