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

不會飛的鳥

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 不會飛的鳥 閱讀(897) 評論(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>
            久久精品人人做人人综合| 亚洲男同1069视频| 久久久99免费视频| 另类天堂av| 欧美一级艳片视频免费观看| 欧美国产精品va在线观看| 久久精品免视看| 在线观看视频免费一区二区三区| 亚洲在线观看| 欧美在线一二三区| 亚洲人成毛片在线播放女女| 欧美日本久久| 久久免费精品日本久久中文字幕| 国模私拍一区二区三区| 欧美不卡视频一区发布| 日韩网站在线| 蜜桃伊人久久| 亚洲天堂av高清| 国产欧美成人| 欧美日韩精品免费观看视频| 午夜精品久久| 久久这里有精品15一区二区三区| 久久久久久久综合色一本| 亚洲电影成人| 国产欧美日本一区视频| 美女视频一区免费观看| 亚洲一区二区三| 亚洲午夜精品17c| 亚洲剧情一区二区| 欧美国产一区视频在线观看| 欧美与黑人午夜性猛交久久久| 在线亚洲一区| 欧美在线一区二区| 夜夜爽99久久国产综合精品女不卡| 欧美一区二区成人6969| 国产人久久人人人人爽| 欧美日韩一二区| 欧美日韩精品一本二本三本| 美女久久一区| 欧美日韩伦理在线免费| 蜜臀av国产精品久久久久| 久久夜精品va视频免费观看| 99精品视频一区二区三区| 亚洲伦理在线观看| 一区二区欧美在线| 亚洲一区二区不卡免费| 亚洲一区国产| 性娇小13――14欧美| 中文在线资源观看网站视频免费不卡 | 亚洲精品久久久久久下一站| 亚洲一区精品电影| 性色av一区二区三区| 久久精品国产一区二区三区免费看 | 国内精品久久久久久影视8| 黄色成人av网站| 在线一区视频| 亚洲高清不卡一区| 欧美在线在线| 国产精品h在线观看| 在线免费日韩片| 欧美在线视频免费播放| 亚洲精品1区| 久久深夜福利免费观看| 国产精品免费看久久久香蕉| 亚洲精品国产精品国自产观看浪潮| 午夜精品久久| 亚洲一区二区免费看| 国产精品成人午夜| 亚洲精选一区二区| 欧美激情欧美激情在线五月| 欧美一区二区三区在线看| 亚洲人线精品午夜| 夜夜精品视频| 亚洲日本欧美| 久久亚洲一区二区三区四区| 亚洲午夜女主播在线直播| 久久久久高清| 狠狠色2019综合网| 亚洲国产老妈| 欧美激情亚洲另类| 亚洲性视频h| 午夜精品视频网站| 尤物在线观看一区| 欧美激情视频一区二区三区免费 | 欧美一区=区| 亚洲一区在线观看视频| 亚洲精品四区| 国产日韩1区| 99视频国产精品免费观看| 久久国产毛片| 在线一区观看| 国产伦精品一区二区三区高清版| 欧美一区二区播放| 久久国产毛片| 国产亚洲毛片| 久久久欧美一区二区| 欧美+亚洲+精品+三区| 在线播放亚洲| 欧美日韩色综合| 亚洲一区免费观看| 久久久久久97三级| 国产精品日韩欧美综合| 一区二区三区不卡视频在线观看 | 欧美精品大片| 亚洲人成网站777色婷婷| 亚洲乱码国产乱码精品精| 欧美日韩免费在线观看| 欧美专区在线观看| 亚洲免费av网站| 老司机午夜精品视频| 亚洲一区二区三区三| 亚洲国产欧美一区二区三区久久| 久久一区二区三区av| 亚洲一区二区三区在线看| 亚洲一区综合| 亚洲啪啪91| 久久免费国产精品| 欧美亚洲综合另类| 亚洲一区二区三区在线| 亚洲国产裸拍裸体视频在线观看乱了中文| 欧美大片在线观看一区| 久久国产精彩视频| 亚洲乱码视频| 亚洲欧美日韩中文在线制服| 欧美视频日韩视频在线观看| 久久久www成人免费无遮挡大片| 一本大道久久a久久综合婷婷| 国产日韩欧美一区二区三区四区| 你懂的成人av| 每日更新成人在线视频| 久久精品99久久香蕉国产色戒 | 伊人久久亚洲影院| 欧美日韩在线免费| 欧美日韩国产123| 欧美a级一区二区| 蜜臀av在线播放一区二区三区| 久久琪琪电影院| 久久综合色88| 亚洲欧美日韩在线播放| 亚洲精品视频啊美女在线直播| 激情国产一区| 亚洲最新在线视频| 亚洲欧美日韩精品在线| 久久久久久亚洲精品杨幂换脸| 国产精品免费网站在线观看| 国产精品在线看| 亚洲精品一区二区三区福利 | 久久精品人人做人人爽电影蜜月| 国产精品视频网站| 欧美无砖砖区免费| 在线欧美福利| 欧美怡红院视频| 亚洲剧情一区二区| 久久影音先锋| 国产亚洲一区在线| 亚洲一区免费网站| 亚洲高清免费| 欧美一区二区三区视频免费播放| 欧美国产亚洲精品久久久8v| 国产农村妇女精品一二区| 中国成人黄色视屏| 亚洲精品国产品国语在线app| 久久综合给合| 在线观看av不卡| 玖玖国产精品视频| 久久乐国产精品| 国内伊人久久久久久网站视频 | 欧美美女操人视频| 国产一区二区三区四区在线观看| 亚洲视频在线观看| 正在播放亚洲| 国产伦精品一区二区三区免费迷| 午夜欧美精品| 亚洲欧美视频在线观看视频| 国产欧美va欧美不卡在线| 欧美一区三区三区高中清蜜桃| 亚洲欧美卡通另类91av| 国产日韩免费| 亚洲高清中文字幕| 亚洲国产成人在线| 欧美日韩高清区| 中文一区二区| 欧美在线视频免费| 99成人免费视频| 午夜视频在线观看一区二区| 尤物网精品视频| 在线视频精品一区| 国产综合色精品一区二区三区| 亚洲第一黄网| 亚洲伦理中文字幕| 欧美亚洲在线视频| 伊人久久婷婷| 亚洲一区二区av电影| 狠狠久久亚洲欧美| 国产欧美精品一区aⅴ影院| 亚洲精品麻豆| 亚洲国产视频直播| 久久精品人人做人人爽电影蜜月| 亚洲午夜女主播在线直播| 欧美国产另类|