1. 程式人生 > >linux下c++使用occi連線oracle資料庫步驟,及出現的問題和解決

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

/usr/lib/oracle/10.2.0.3/client64/lib -I/ usr/include/oracle/10.2.0.3/client64 -locci –lclntsh /usr/lib/libstdc++.so.5

5. 執行

./connclient

輸出結果:

1 name1

2 name2