簡體   English   中英

為什么 QOCI 插件不起作用

[英]Why QOCI plugin isn't working

我正在嘗試將 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 和其他一些。

additional checks: opened qsqloci4.dll with dependency walker, 3 dlls were impossible to locate: 1-QtCore4.dll 2-QtSql4.dll 3-MSVSC80.dll However it is also impossible to locate them when opening qsqlpsql.dll with dependency walker. 我相信加載 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 在這種情況下會失敗? 有任何想法嗎?

提前致謝。

您需要在包含您的 exe 的目錄中創建一個名為 sqldrivers 的文件夾。 Put all the SQL driver DLLs you are using in there (for oracle oci.dll, ociw32.dll, oraociei12.dll, oraons.dll, qsqloci4.dll, qsqlocid4.dll).

如何在 Windows 上構建插件

從 Oracle 客戶端安裝 CD 中選擇 Oracle 客戶端安裝程序中的選項“程序員”足以構建插件。

構建插件如下(這里假設Oracle Client安裝在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM