为什么QOCI插件不起作用

时间:2011-06-03 13:02:43

标签: oracle qt qtsql qoci

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

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

2-复制了插件调试&将dll和lib文件发布到插件/ sqldrivers和OCI.DLL到%WINDIR%\ system32 (插件/ 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在这种情况下会失败?有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

如何在Windows上构建插件

从Oracle客户端安装CD中选择Oracle Client Installer中的“Programmer”选项就足以构建插件。

按如下方式构建插件(此处假设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编译器,请在上面的行中将make替换为make。

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

set PATH=%PATH%;c:\oracle\bin

答案 1 :(得分:0)

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