青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

不會飛的鳥

2010年12月10日 ... 不鳥他們!??! 我要用自己開發的分布式文件系統、分布式調度系統、分布式檢索系統, 做自己的搜索引擎!??!大魚有大志!??! ---楊書童

[轉]Linux下g++編譯C++連接oracle(OCCI)出現的問題及解決方式

由于項目原因,開始學習C++,剛接觸半個多月,今天參考網上例子,寫了個簡單的C++連接ORACLE的DEMO,可是使用g++編譯時不順利,不是報這個錯就是那個,最后參考網上的解決方式和個人理解,終于調試好了,現把編譯中出現的問題和解決方法總結出來。 

  源代碼 
 
C++代碼
  1. #include <iostream>  
  2. #include <string>  
  3. #include "occi.h"  
  4. using namespace oracle::occi;  
  5. using namespace std;  
  6.   
  7. int main()  
  8. {  
  9.         string usr="sys";  
  10.         string pwd="orcl";  
  11.         string SID="ORCL";  
  12.         string date;  
  13.   
  14.         Environment *env=Environment::createEnvironment(Environment::OBJECT);  
  15.         Connection *conn= env->createConnection(usr,pwd,SID);//all strings  
  16.         if(conn)  
  17.                 cout<<"success createConnection!"<<endl;  
  18.         else  
  19.                 cout<<"failure createConnection!"<<endl;  
  20.   
  21.         Statement *stmt = conn->createStatement();  
  22.         string sSQL = "select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual";  
  23.         stmt->setSQL(sSQL);  
  24.   
  25.   
  26.         ResultSet *rs = stmt->executeQuery();  
  27.         if(rs->next())  
  28.         {  
  29.                 date = rs->getString(1);  
  30.         }  
  31.   
  32.         cout<<"now time :"<<date<<endl;  
  33.   
  34.         env->terminateConnection(conn);  
  35.         Environment::terminateEnvironment(env);  
  36.   
  37.         return 0;  
  38. }  
  39.     
  1. #include <iostream>  
  2. #include <string>  
  3. #include "occi.h"  
  4. using namespace oracle::occi;  
  5. using namespace std;  
  6.   
  7. int main()  
  8. {  
  9.         string usr="sys";  
  10.         string pwd="orcl";  
  11.         string SID="ORCL";  
  12.         string date;  
  13.   
  14.         Environment *env=Environment::createEnvironment(Environment::OBJECT);  
  15.         Connection *conn= env->createConnection(usr,pwd,SID);//all strings  
  16.         if(conn)  
  17.                 cout<<"success createConnection!"<<endl;  
  18.         else  
  19.                 cout<<"failure createConnection!"<<endl;  
  20.   
  21.         Statement *stmt = conn->createStatement();  
  22.         string sSQL = "select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual";  
  23.         stmt->setSQL(sSQL);  
  24.   
  25.   
  26.         ResultSet *rs = stmt->executeQuery();  
  27.         if(rs->next())  
  28.         {  
  29.                 date = rs->getString(1);  
  30.         }  
  31.   
  32.         cout<<"now time :"<<date<<endl;  
  33.   
  34.         env->terminateConnection(conn);  
  35.         Environment::terminateEnvironment(env);  
  36.   
  37.         return 0;  
  38. }  
  39.     


  本人linux上安裝oracle路徑:/opt/app/oracle/product/10.2.0/db_1 

  編譯命令:g++ -o conn -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -g 

問題一:編譯時報如下錯誤: 
    
Shell代碼
  1.       [oracle@localhost demo]$ g++ g++ -o conn -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib -lclntsh -locci /usr/lib/libstdc++.so.5 conn_db.cpp -g  
  2. g++: g++: No such file or directory  
  3. conn_db.cpp:3:18: error: occi.h: No such file or directory  
  4. conn_db.cpp:4: error: 'oracle' has not been declared  
  5. conn_db.cpp:4: error: 'occi' is not a namespace-name  
  6. conn_db.cpp:4: error: expected namespace-name before ';' token  
  7. conn_db.cpp: In function 'int main()':  
  8. conn_db.cpp:14: error: 'Environment' was not declared in this scope  
  9. conn_db.cpp:14: error: 'env' was not declared in this scope  
  10. conn_db.cpp:14: error: 'Environment' is not a class or namespace  
  11. conn_db.cpp:14: error: 'Environment' is not a class or namespace  
  12. conn_db.cpp:15: error: 'Connection' was not declared in this scope  
  13. conn_db.cpp:15: error: 'conn' was not declared in this scope  
  14. conn_db.cpp:21: error: 'Statement' was not declared in this scope  
  15. conn_db.cpp:21: error: 'stmt' was not declared in this scope  
  16. conn_db.cpp:26: error: 'ResultSet' was not declared in this scope  
  17. conn_db.cpp:26: error: 'rs' was not declared in this scope  
  18. conn_db.cpp:35: error: 'Environment' is not a class or namespace  
  19.        

   
    解決:編譯時沒有引入OCCI頭文件,如果沒有,先下載對應的 ORACLE client安裝,比如我的是oracle10g,下載了oracle-instantclient-basic- 10.2.0.4-1.i386.zip,解壓到一個目錄下(/home/oracle/oracle/include),然后在編譯文件的時候引進這個解壓目錄 

   編譯命令增加OCCI目錄:g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -g 


問題2:找不到對應函數 
 
Shell代碼
  1.    [oracle@localhost demo]$ g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -Wall -O -g  
  2. /tmp/cclFs9xq.o: In function `main':  
  3. /home/oracle/oracle/demo/conn_db.cpp:14: undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'  
  4. /home/oracle/oracle/demo/conn_db.cpp:35: undefined reference to `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)'  
  5. collect2: ld returned 1 exit status   
  6.    

解決:增加libocci.so和libclntsh.so指定編譯 
  
  修改后的編譯命令: g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -lclntsh -locci -Wall -O -g 

  另外可能在引入-lclntsh -locci編譯時可能會報找不到以下錯誤: 
    
Shell代碼
  1.      [oracle@localhost demo]$ g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -lclntsh -locci /usr/lib/libstdc++.so.5 -Wall -O -g  
  2. /usr/bin/ld: cannot find -lclntsh  
  3. collect2: ld returned 1 exit status  
  4. [oracle@localhost demo]$   
  5.        

     解決:這是因為沒有找到libclntsh.so和libocci.so鏈接庫,你在可以把oracle client安裝目錄下把這兩個文件拷貝到$ORACLE_HOME/lib目錄下,或加到/usr/lib目錄下就可以了 

問題三:occi在linux編譯運行時報libstdc++.so.6沖突的問題 
   
Java代碼
  1. [oracle@localhost demo]$ g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -lclntsh -locci -Wall -O -g  
  2. /usr/bin/ld: warning: libstdc++.so.5, needed by /opt/app/oracle/product/10.2.0/db_1/lib/libocci.so, may conflict with libstdc++.so.6  
  1. [oracle@localhost demo]$ g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -lclntsh -locci -Wall -O -g  
  2. /usr/bin/ld: warning: libstdc++.so.5, needed by /opt/app/oracle/product/10.2.0/db_1/lib/libocci.so, may conflict with libstdc++.so.6  

  解決:OCCI庫在linux編譯的時候,由于linux版本太高,會提示以上情況,實際上,在大多數linux系統上,還保留有libstdc++5的庫,自己手工在編譯的時候加上去就好了 

  修改后的編譯命令:g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib -lclntsh -locci /usr/lib/libstdc++.so.5 conn_db.cpp -g 

  編譯通過后執行結果輸出: 
  
Shell代碼
  1. [oracle@localhost demo]$ g++ -o conn -I/home/oracle/oracle/include -L/opt/app/oracle/product/10.2.0/db_1/lib -L/opt/oracle/product/10.2.0/db_1/rdbms/lib conn_db.cpp -lclntsh -locci /usr/lib/libstdc++.so.5 -Wall -O -g  
  2. [oracle@localhost demo]$ ./conn  
  3. success createConnection!  
  4. now time :2010-11-14 22:49:24  
  5. [oracle@localhost demo]$  


posted on 2014-12-18 13:04 不會飛的鳥 閱讀(898) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久婷婷激情| 亚洲靠逼com| 欧美好骚综合网| 亚洲一区精品电影| 欧美日韩美女一区二区| 亚洲国产精品99久久久久久久久| 亚洲欧美日韩另类精品一区二区三区 | 国产精品素人视频| 99精品99| 亚洲韩国日本中文字幕| 久久国产成人| 狠狠狠色丁香婷婷综合激情| 欧美中文字幕在线播放| 亚洲男人第一网站| 国产精品每日更新| 欧美亚洲网站| 性色av一区二区三区在线观看| 国产精品午夜在线| 欧美中文字幕久久| 久久久一区二区| 亚洲精品自在久久| 日韩亚洲欧美在线观看| 国产精品二区在线| 久久大综合网| 免费不卡欧美自拍视频| 99亚洲一区二区| 亚洲深夜福利视频| 国产午夜精品美女视频明星a级| 午夜一级久久| 久久久久国产一区二区三区| 91久久夜色精品国产九色| 欧美激情亚洲视频| 欧美区日韩区| 久久国产精品久久精品国产| 久久久噜噜噜久久久| 日韩视频一区二区三区| 亚洲少妇一区| 在线成人性视频| 日韩视频亚洲视频| 国产亚洲制服色| 亚洲国产精品一区二区尤物区| 欧美日韩一二区| 久久er精品视频| 欧美激情1区2区| 欧美一级久久久久久久大片| 久久亚洲精选| 午夜久久一区| 欧美福利一区二区三区| 久久福利毛片| 欧美日韩在线播放三区四区| 久久久综合激的五月天| 欧美日韩成人一区| 麻豆成人在线| 国产精品手机视频| 91久久午夜| 加勒比av一区二区| 中文久久精品| 亚洲经典自拍| 欧美一区日本一区韩国一区| 日韩一级大片| 久久久久亚洲综合| 欧美有码在线观看视频| 欧美日韩精品欧美日韩精品 | 亚洲第一精品影视| 国内久久精品| 午夜精品区一区二区三| 欧美在线观看网站| 一区二区三区 在线观看视频| 欧美在线观看一二区| 亚洲视频精选在线| 美女精品国产| 久久精品国产免费看久久精品| 欧美另类久久久品| 久久综合国产精品| 国产日韩欧美日韩大片| 亚洲免费福利视频| 亚洲精品综合久久中文字幕| 久久精品成人一区二区三区| 亚洲女女做受ⅹxx高潮| 欧美激情国产日韩精品一区18| 久久国产婷婷国产香蕉| 国产精品国产自产拍高清av王其| 亚洲黄色免费网站| 亚洲国产欧美精品| 久久久久国产精品www| 欧美一区二区三区精品| 欧美三级视频在线| 亚洲久久一区二区| 日韩午夜电影av| 欧美国内亚洲| 亚洲国产网站| 亚洲精品一区久久久久久| 久久综合给合久久狠狠狠97色69| 久久久亚洲一区| 国内精品福利| 久久精品亚洲一区二区| 久久精品国产精品 | 午夜精品一区二区三区在线视| 亚洲午夜激情| 国产精品av一区二区| 一区二区av在线| 一区二区三区日韩欧美精品| 欧美日韩日日夜夜| 夜色激情一区二区| 亚洲影院色无极综合| 国产精品国码视频| 亚洲综合色网站| 久久精品二区三区| 狠狠色狠色综合曰曰| 久久久亚洲高清| 亚洲福利电影| 一本大道久久a久久精品综合 | 影音先锋在线一区| 久久免费视频一区| 欧美电影专区| 亚洲色图在线视频| 国产精品久久久久久av下载红粉 | 韩国一区二区三区在线观看| 久久久高清一区二区三区| 欧美成人午夜激情在线| 亚洲精选一区| 国产精品久久久久77777| 亚洲女同精品视频| 欧美资源在线| 国产精品伦一区| 欧美一区二区三区另类| 久久午夜羞羞影院免费观看| 亚洲国产日韩在线一区模特| 欧美伦理a级免费电影| 亚洲欧美国产高清| 蜜乳av另类精品一区二区| 亚洲精品美女在线观看| 欧美色图一区二区三区| 欧美一区二区私人影院日本| 欧美激情第二页| 先锋影音国产精品| 91久久久久久久久久久久久| 国产精品婷婷| 免播放器亚洲一区| 亚洲一区二区三区四区中文| 欧美成人蜜桃| 欧美一区二区精美| 91久久国产综合久久91精品网站| 欧美视频第二页| 久久久噜噜噜| 亚洲免费婷婷| 蜜乳av另类精品一区二区| 最新国产成人av网站网址麻豆 | 欧美精品日韩| 老司机午夜精品视频在线观看| 国产精品成人免费| 亚洲六月丁香色婷婷综合久久| 国产精品一区二区三区四区| 亚洲国产色一区| 亚洲国产成人精品视频| 久久国产婷婷国产香蕉| 亚洲夜间福利| 午夜久久久久久| 欧美日韩精品一区二区| 欧美wwwwww| 狠狠色香婷婷久久亚洲精品| 亚洲欧美激情一区| 久久gogo国模裸体人体| 久久久久久亚洲精品不卡4k岛国| 亚洲第一二三四五区| 欧美刺激性大交免费视频| 亚洲视频免费看| 欧美视频一区二区三区| 免费不卡欧美自拍视频| 欧美亚洲日本网站| 亚洲视频在线视频| 亚洲日本中文字幕| 亚洲欧洲三级电影| 亚洲第一免费播放区| 欧美成人福利视频| 欧美xxxx在线观看| 美女露胸一区二区三区| 久久九九热免费视频| 欧美影院成人| 久久国产精品网站| 久久疯狂做爰流白浆xx| 久久动漫亚洲| 久久综合九色综合欧美狠狠| 亚洲一区二区三区影院| 亚洲电影免费观看高清完整版在线观看| 亚洲欧美国产毛片在线| 亚洲一区二区三区免费视频| 一区二区三区 在线观看视| 日韩香蕉视频| 亚洲天堂网在线观看| 亚洲男人的天堂在线| 欧美一级免费视频| 久久都是精品| 欧美成人午夜剧场免费观看| 美女诱惑黄网站一区| 欧美成人69av| 亚洲欧洲一区二区三区久久| 亚洲美女区一区| 亚洲欧美在线一区| 久久手机免费观看|