Oracle 为什么QOCI插件不起作用

Oracle 为什么QOCI插件不起作用,oracle,qt,qtsql,qoci,Oracle,Qt,Qtsql,Qoci,实际上,我正在尝试将Qt与QOCI一起使用,同时也尝试使用其他插件,但由于某些原因,我无法使用。以下是我所做的事情和结果: 1- 插件成功构建 2-将插件调试和发布dll和lib文件复制到plugins/sqldrivers,并将OCI.dll复制到%WINDIR%\system32 plugins/sqldrivers,其他插件(如QPSQL和QMYSQL)的位置 3-QSqlDatabase::isDriverAvailableQOCI返回false,其中对于QMYSQL和QPSQL返回tr

实际上,我正在尝试将Qt与QOCI一起使用,同时也尝试使用其他插件,但由于某些原因,我无法使用。以下是我所做的事情和结果:

1- 插件成功构建

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

3-QSqlDatabase::isDriverAvailableQOCI返回false,其中对于QMYSQL和QPSQL返回true。我对QMYSQL和QPSQL也做了同样的操作

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

其他检查:使用dependency walker打开qsqloci4.dll,无法找到3个dll:1-QtCore4.dll 2-QtSql4.dll 3-MSVSC80.dll。但是,使用dependency walker打开qsqlpsql.dll时也无法找到它们。我相信加载dll不会因为qsqloci4.dll的依赖关系而失败。但是,任何想法都是受欢迎的

新闻

失败!!!请不要确认这两个文件都存在于给定路径中

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


提前感谢。

如何在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

您需要在包含exe的目录中创建文件夹调用sqldrivers。将所有用于oracle oci.dll、ociw32.dll、oraociei12.dll、oraons.dll、qsqloci4.dll、qsqlocid4.dll的SQL驱动程序dll放在其中。

他们可能有相同的问题:问题是我没有安装安装客户端。oci.dll加载安装客户端附带的dll。
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
set PATH=%PATH%;c:\oracle\bin