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

不會飛的鳥

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 不會飛的鳥 閱讀(892) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美视频在线观看| 亚洲精品中文字幕女同| 久久久久国产精品麻豆ai换脸| 一本色道久久综合亚洲精品小说 | 国产精品久久久久久福利一牛影视| 欧美韩国日本综合| 欧美精品亚洲一区二区在线播放| 欧美日韩国产不卡| 国产精品免费视频观看| 国产欧美日韩不卡| 亚洲电影免费观看高清完整版在线观看 | 国产午夜精品美女视频明星a级| 国产综合网站| av不卡在线| 久久精品国产精品 | 久久国产精品99久久久久久老狼| 狼人天天伊人久久| 欧美婷婷在线| 尤物在线精品| 亚洲一二三级电影| 久久漫画官网| 在线视频你懂得一区二区三区| 欧美一区二区免费| 欧美激情一二区| 欧美xxx在线观看| 日韩午夜av| 久久久精品欧美丰满| 欧美三级在线视频| 亚洲第一成人在线| 小处雏高清一区二区三区 | 亚洲综合成人在线| 欧美成人在线影院| 欧美一区2区视频在线观看 | 久久国产精品一区二区| 欧美日韩精品一本二本三本| 娇妻被交换粗又大又硬视频欧美| 亚洲性人人天天夜夜摸| 欧美成人国产va精品日本一级| 国产精品99久久久久久人| 久热精品视频| 狠狠色综合一区二区| 欧美亚洲一级| 亚洲小视频在线观看| 欧美日韩hd| 亚洲精品黄网在线观看| 久久综合色一综合色88| 久久gogo国模裸体人体| 国产精品一区二区欧美| 亚洲综合三区| 亚洲午夜精品视频| 国产精品jizz在线观看美国| 日韩视频一区二区在线观看 | 久久精品国产亚洲高清剧情介绍| 欧美日韩在线视频一区二区| 亚洲精品一线二线三线无人区| 欧美成va人片在线观看| 久久久亚洲人| 亚洲国产成人精品视频| 奶水喷射视频一区| 久久久久久久久久久一区| 黑人操亚洲美女惩罚| 久久亚洲精品中文字幕冲田杏梨 | 亚洲毛片在线观看.| 欧美激情欧美激情在线五月| 亚洲日本无吗高清不卡| 亚洲日本va午夜在线电影| 欧美成人精品| 日韩视频在线免费| 一本不卡影院| 国产精品丝袜白浆摸在线| 欧美影院成年免费版| 久久国产88| 亚洲高清在线| 亚洲精品小视频| 国产精品色婷婷久久58| 久久久久九九视频| 免费视频一区| 欧美在线一级va免费观看| 久久―日本道色综合久久| 亚洲第一在线综合网站| 亚洲欧洲视频在线| 国产精品v欧美精品v日韩| 性色av一区二区三区红粉影视| 久久国产精品72免费观看| 亚洲区在线播放| 一本一道久久综合狠狠老精东影业 | 99在线观看免费视频精品观看| 国产精品高清在线| 久久久久久久网| 欧美激情欧美狂野欧美精品| 亚洲女女做受ⅹxx高潮| 久久久久亚洲综合| 中文日韩在线视频| 久久精品国产一区二区三区| 亚洲精品在线一区二区| 亚洲欧美电影在线观看| 亚洲第一区中文99精品| 日韩视频专区| 黄色亚洲大片免费在线观看| 亚洲精品乱码| 在线成人欧美| 亚洲欧美卡通另类91av | 久久九九全国免费精品观看| 欧美高清视频一区| 久久精品视频免费| 欧美日韩一区二区三区在线观看免 | 亚洲国产精品久久久久秋霞影院 | 午夜视频在线观看一区二区三区| 亚洲国产成人av| 亚洲影院污污.| 一区二区成人精品| 久久久久综合一区二区三区| 亚洲欧美区自拍先锋| 欧美激情网站在线观看| 免费中文日韩| 一区二区亚洲| 久久大逼视频| 欧美一区二区精品久久911| 欧美日本国产一区| 亚洲国产天堂久久综合网| 在线成人激情| 久久久国产视频91| 久久精品亚洲国产奇米99| 国产精品久久久久婷婷| 亚洲精品日韩久久| 亚洲精品女av网站| 免费欧美电影| 欧美国产视频在线| 亚洲国产精品热久久| 久久久亚洲高清| 久久综合中文| 一区在线免费| 久久综合久久综合九色| 久热成人在线视频| 亚洲一区国产精品| 欧美日韩精品免费观看视频| 欧美国产日韩xxxxx| 韩国美女久久| 久久精品国产91精品亚洲| 久久久久国产一区二区| 国产一区二区精品在线观看| 午夜日韩在线观看| 久久午夜羞羞影院免费观看| 狠狠色狠狠色综合日日91app| 久久精品一区二区| 亚洲高清色综合| 一区二区毛片| 国产免费一区二区三区香蕉精| 午夜视频在线观看一区| 麻豆精品91| 99re66热这里只有精品4| 欧美日韩国产精品自在自线| 亚洲私人影吧| 久热这里只精品99re8久| 亚洲国产综合在线看不卡| 欧美精品九九| 午夜激情久久久| 欧美大片一区二区| 在线天堂一区av电影| 国产精品亚洲аv天堂网| 欧美中文字幕在线播放| 欧美国产综合一区二区| 亚洲系列中文字幕| 韩日视频一区| 欧美色大人视频| 久久九九精品| 日韩亚洲精品电影| 久久综合亚州| 亚洲专区免费| 亚洲电影网站| 国产精品视频网站| 欧美成人免费播放| 欧美亚洲午夜视频在线观看| 亚洲丶国产丶欧美一区二区三区| 亚洲一区二区免费看| 在线看国产一区| 国产精品卡一卡二| 免费毛片一区二区三区久久久| 一区二区三区四区五区精品| 美玉足脚交一区二区三区图片| 亚洲视频大全| 亚洲日本电影| 国产一区二区激情| 国产精品久久久久久亚洲毛片| 久久综合中文| 欧美一级电影久久| 9i看片成人免费高清| 欧美成人午夜视频| 久久av一区二区| 亚洲网站视频福利| 亚洲黑丝一区二区| 国产一区二区高清视频| 国产精品福利在线观看网址| 欧美成人国产一区二区| 欧美在线免费观看| 亚洲一区亚洲二区| 99国产精品视频免费观看一公开 | 亚洲欧美日韩国产综合| 亚洲欧洲一区二区三区久久| 国内久久视频|