linux下c++使用occi連線oracle資料庫步驟,及出現的問題和解決
1. 所需安裝包 (64 位 )
oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm
oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm
2. 安裝
安裝後,庫檔案路徑為 /usr/lib/oracle/10.2.0.3/client64/lib/
標頭檔案路徑為 /usr/include/oracle/10.2.0.3/client64/
3. 測試程式
connclient.cpp
4. 編譯
g++ -o connclient connclient.cpp -L /usr/lib/oracle/10.2.0.3/client64/lib
編譯出現的問題
1) error: occi.h: No such file or directory
解決:編譯時沒有引入 OCCI 標頭檔案
g++ -o connclient connclient.cpp -L /usr/lib/oracle/10.2.0.3/client64/lib -I/ usr/include/oracle/10.2.0.3/client64
2) 找不到對應函式
undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'
解決:編譯時引入庫
g++ -o connclient connclient.cpp -L /usr/lib/oracle/10.2.0.3/client64/lib -I/ usr/include/oracle/10.2.0.3/client64 -locci –lclntsh
3) 找不到庫,如 libstdc++.so.5
解決: OCCI 庫在 linux 編譯的時候,由於 linux 版本太高,可能沒有 libstdc++.so.5 庫,下載這個版本的庫,即可,下載完可能會提示和 libstdc++.so.6 衝突,編譯時加上即可
g++ -o connclient connclient.cpp -L
5. 執行
./connclient
輸出結果:
1 name1
2 name2