我用的是 VS2010 + InstantClient 12.1.0.2.0 的 SDK + Qt5.5.1_msvc2010
現在情況是,qsqloci 編譯好了,
放在了: C:\Qt\Qt5.5.1_msvc2010\5.5\msvc2010\plugins\sqldrivers 下面
基本連接代碼寫好了,可以運行,連接正常。
但我想要模擬客戶環境時,就有點懵了,因為也不能在客戶那裝個 Qt 啊
所以按照網路上找的 方法,把 sqldrivers 目錄復制到我的程式所在目錄下,
再雙擊我的程式……
Qt5Sqld.dll, Qt5Cored.dll 已經拷進去了,程式可以運行。
但是在 QSqlDatabase::addDatabase("QOCI") 時出現:QSqlDatabase: QOCI driver not loaded
【這個情況是這樣,剛試的時候是成功的,我又把程式目錄下的 sqldrivers 目錄改名了,居然仍能正確執行,半天才發現 Qt 安裝目錄下的那個 sqldrivers 目錄下,我用 VS2010 除錯證明了,加載的就是那個目錄下的,后來我就把那個目錄下的洗掉了,不能改名,因為更后來我又發現,只要在那個目錄就能自動識別。。。。】
后來我又根據vs2010(因為它會提示加載了那些dll),總結出需要的 qt,oracle 相關dll 串列
Qt5Sqld.dll
Qt5Cored.dll
qsqlocid.dll 我測驗時用的除錯版
oci.dll
oraociei12.dll
oraons.dll
程式目錄復制了一份,sqldrivers 子目錄也復制了一份,故障依舊。
然后我就想了,可能內部代碼自動找到了 “qt安裝目錄下的【插件目錄】”
可是客戶環境99%以上不會安裝qt開發環境,
這怎么整?
uj5u.com熱心網友回復:

這個是我發布的程式目錄,我是將程式所依賴的檔案都放置在程式目錄下解決的問題,希望可以幫到你。
uj5u.com熱心網友回復:
資料庫是使用的mysql,uj5u.com熱心網友回復:
感謝,不過你的 platforms 目錄里面是啥?
uj5u.com熱心網友回復:
就是qt庫目錄\plugins\platforms 主要是qwindows.dll,沒有這個,windows下界面無法顯示。uj5u.com熱心網友回復:
暫時搞定了。在 qt 命令列執行命令:"windeployqt 我的程式.exe" 它就把有用的東西(包括目錄之類的)都復制到當前目錄了
復制結果和我理解的沒差別,就是不知道之前為啥不行。。。
等等到明天,看看是否仍舊正常不……
雖然期間我也把plugin原始碼檔案 qsql_oci.cpp, qsql_oci_p.h 加入到自己的工程里,做些修改,然后:
QSqlDatabase::registerSqlDriver("MYQOCI", new QSqlDriverCreator<QOCIDriver>);
QSqlDatabase db = QSqlDatabase::addDatabase("MYQOCI");
也可以,哈哈哈。
不過,當我想把其單獨弄一個庫出來,結果又編譯不過去了,明明之前編譯過去了
……
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/145805.html
標籤:Qt
上一篇:剛剛下下來的資源,求教怎么使用
下一篇:哎,誰幫看看,感激不盡。。。
