現象:程式啟動時建立 OCCI 環境失敗,錯誤碼 ORA-32104 無詳細訊息。
根因:編譯時連結的 OCCI 函式庫版本與執行時載入的 Oracle Client 版本不一致。典型案例:開發機安裝 10g Client,但專案連結 11g OCCI SDK。
instantclient_11_2 目錄置於 PATH 最前端,優先於舊版 Client 路徑。occivc9win32-111060-132181 (OCCI VC9 版本) 下的 oraocci11.dll 等複製覆蓋至 instantclient_11_2 目錄,確保載入的是匹配版本。編譯階段:instantclient-sdk-nt-11.2.0.4.0 → .h 標頭檔
連結階段:occivc9win32-111060-132181 → .lib 匯入庫
執行階段:occivc9win32-111060-132181 → oraocci11.dll (OCCI 核心)
instantclient_11_2 → oci.dll + 其它 Client 共享庫
現象:Visual Studio 按 F5 啟動偵錯時彈出錯誤對話框,但雙擊 EXE 直接執行完全正常。
可能原因:
PATH 或 ORACLE_HOME。Debugging → Environment 加入 PATH=...instantclient_11_2;%PATH%。Working Directory 為 EXE 所在目錄。Attach to Process 方式:先直接執行 EXE,再從 VS Debug → Attach to Process 掛上去。_NO_DEBUG_HEAP=1 環境變數禁用偵錯堆。CMake / vcxproj 透過 find_package(OCI) 統一管理包含目錄、庫目錄、連結庫。instantclient_11_2 整個目錄隨應用程式打包 (綠色部署),避免系統級 Client 衝突。oraocci11.trc) 診斷疑難雜症:set ORA_OCCI_TRACE_LEVEL=1。