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

不會飛的鳥

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>
            国产一区二区精品久久| 国产精品三上| 欧美一区二区三区视频| 国产精品欧美经典| 性8sex亚洲区入口| 免费欧美在线| 日韩一级黄色av| 国产精品亚洲综合一区在线观看| 午夜宅男久久久| 老司机午夜精品视频在线观看| 亚洲国产第一| 国产伦精品一区二区三区在线观看| 欧美va亚洲va国产综合| 欧美黄在线观看| 亚洲欧美综合精品久久成人| 狠狠色丁香婷综合久久| 欧美日韩亚洲精品内裤| 久久精品中文字幕一区| 欧美成人精品| 欧美专区一区二区三区| 一区二区欧美激情| 在线高清一区| 国产午夜精品福利| 欧美日韩直播| 久久免费的精品国产v∧| 午夜国产精品视频| 亚洲精品少妇网址| 亚洲电影免费在线观看| 国产亚洲欧美一区二区| 国产精品v欧美精品v日韩 | 亚洲精品在线观看免费| 国产情人节一区| 国产免费观看久久黄| 亚洲激情六月丁香| 91久久午夜| 在线免费观看视频一区| 亚洲女性裸体视频| 在线视频欧美日韩| 亚洲一本视频| 亚洲免费伊人电影在线观看av| 99国产精品久久久久老师| 亚洲高清不卡一区| 久久国产精品99国产| 亚洲国内高清视频| 亚洲老司机av| 亚洲男人天堂2024| 久久不射电影网| 欧美96在线丨欧| 国产精品欧美久久| 精品盗摄一区二区三区| 亚洲精品中文字幕在线| 亚洲香蕉网站| 免费看的黄色欧美网站| 91久久精品国产91性色 | 欧美一区二区三区免费看| 麻豆九一精品爱看视频在线观看免费| 欧美激情视频网站| 久久综合狠狠综合久久激情| 亚洲一级高清| 国产精品综合av一区二区国产馆| 欧美三日本三级三级在线播放| 一区二区在线看| 亚洲小少妇裸体bbw| 鲁鲁狠狠狠7777一区二区| 亚洲美女淫视频| 欧美一区二区三区视频| 久久中文精品| 国产精品第十页| 亚洲欧美日韩一区二区三区在线| 亚洲日本一区二区三区| 久久只精品国产| 亚洲黑丝在线| 美女爽到呻吟久久久久| 午夜国产不卡在线观看视频| 亚洲国产欧美久久| 欧美chengren| 亚洲免费视频一区二区| 欧美成人激情视频免费观看| 1000部精品久久久久久久久| 欧美激情91| 亚洲人成绝费网站色www| 欧美在线影院在线视频| 国产日韩欧美在线一区| 国产在线视频不卡二| 国产精品初高中精品久久| 一区二区三区高清视频在线观看| 欧美在线一级视频| 亚洲小视频在线| 国产精品人人爽人人做我的可爱| 亚洲综合视频一区| 欧美精品久久久久久久免费观看| 亚洲砖区区免费| 久色成人在线| 午夜亚洲性色福利视频| 久久成人精品视频| 国产精品大片wwwwww| 久久综合给合久久狠狠色| 亚洲日本一区二区| 国产精品久久久久久久7电影| 美日韩免费视频| 国产精品久久久久高潮| 久久久另类综合| 国模吧视频一区| 亚洲欧洲一区二区三区在线观看| 欧美另类视频在线| 亚洲欧美日韩精品| 亚洲第一福利社区| 亚洲永久免费| 欧美激情1区2区3区| 欧美一级在线亚洲天堂| 国产精品99久久久久久久vr| 欧美精选在线| 亚洲电影一级黄| 一区二区三区成人精品| 日韩视频不卡| 伊人男人综合视频网| 一本久久精品一区二区| 国产精品久久久久9999| 欧美高清在线一区| 欧美激情一二区| 亚洲精品乱码久久久久久| 亚洲成色777777在线观看影院| 亚洲美女黄色片| 一区二区三区国产盗摄| 亚洲国产精品嫩草影院| 久久色中文字幕| 正在播放欧美一区| 国产精品久久久久久久午夜 | 欧美午夜精品一区| 亚洲女性裸体视频| 免费影视亚洲| 欧美日韩国产色视频| 欧美一二三视频| 久久精品中文字幕免费mv| 午夜精品久久久久久| 欧美日韩在线另类| 久久免费高清视频| 欧美寡妇偷汉性猛交| 欧美色图天堂网| 亚洲一区免费看| 欧美一区二区三区在线免费观看| 欧美日韩一区二区三区| 欧美激情一区二区三区蜜桃视频| 久久精品亚洲| 一本在线高清不卡dvd| 国产日韩欧美在线看| 亚洲国产视频a| 亚洲欧洲日产国码二区| 午夜国产精品影院在线观看| 国产精品女人网站| 国产欧美丝祙| 欧美天堂亚洲电影院在线观看| 久久久99精品免费观看不卡| 国产精品久久综合| 久久久国产精彩视频美女艺术照福利 | 久久爱另类一区二区小说| 国产欧美一区二区三区沐欲| 久久久久青草大香线综合精品| 国产精品日韩电影| 国产主播一区二区三区四区| 欧美国产丝袜视频| 久久久久久久久久久成人| 国产日韩一区在线| 亚洲破处大片| 国产精品女主播| 韩国精品在线观看| 国产精品久久久久久久第一福利| 亚洲精品中文字幕女同| 激情av一区二区| 亚洲欧洲精品一区二区| 亚洲男人的天堂在线| 亚洲毛片在线观看| 欧美午夜宅男影院在线观看| 99xxxx成人网| 蜜臀va亚洲va欧美va天堂| 午夜在线一区| 亚洲在线观看| 久久精品二区三区| 久久一区国产| 欧美影院成人| 免费一区视频| 亚洲精品小视频在线观看| 午夜精品美女久久久久av福利| 激情小说另类小说亚洲欧美| 亚洲欧美bt| 中文av一区特黄| 欧美激情第一页xxx| 欧美专区18| 亚洲欧美视频一区二区三区| 久久午夜电影| 国产日韩在线一区二区三区| 这里只有视频精品| 亚洲剧情一区二区| 久久久伊人欧美| 国产精品国产三级国产aⅴ浪潮 | 一区二区三区在线看| 亚洲一区二区免费| 亚洲国产高清在线观看视频| 亚洲视频在线观看网站| 久久免费高清|