Windows 下進行 OCCI ( Oracle C++ Call Interface ) 開發

來源:互聯網
上載者:User

Windows下若安裝的是Oracle 資料庫,則OCCI庫檔案和標頭檔在目錄 %ORACLE_HOME%\oci 下。

這裡採用工具:VS 2005 

(一)基本設定

1. 安裝好 oracle instant client
    參見文章:

2. vs->工具->選項—》解決方案-》vc++-》包含檔案 添加:  
$ORACLE_HOME\oci\include

3. vs->工具->選項—》解決方案-》vc++-》庫檔案 添加:  
$ORACLE_HOME\oci\lib\msvc\vc8

4. 右鍵項目-》屬性-》配置屬性-》連接器-》輸入-》附加依賴項 添加  
oraocci11d.lib  

5 重啟vs 就ok了;

(二)錯誤集錦

1. 運行時提示,“無法啟動此程式,因為電腦中丟失 OCI.dll”

複製 C:\oracle10g\product\10.2.0\db_1\BIN 下的 OCI.dll 到DEBUG目錄,與 exe 檔案放在一起。

2. 編譯時間出現連結錯誤

1>------ 已啟動產生: 項目: TaxServer, 配置: Debug Win32 ------
1>正在連結...
1>   正在建立庫 E:\TaxServer\Debug\TaxServer.lib 和對象 E:\TaxServer\Debug\TaxServer.exp
1>DBwrapper.obj : error LNK2019: 無法解析的外部符號 "public: virtual __thiscall oracle::occi::SQLException::~SQLException(void)" (??1SQLException@occi@oracle@@UAE@XZ),該符號在函數 __catch$?open@DBwrapper@@QAE_NXZ$0 中被引用
1>DBwrapper.obj : error LNK2019: 無法解析的外部符號 "public: virtual int __thiscall oracle::occi::SQLException::getErrorCode(void)const " (?getErrorCode@SQLException@occi@oracle@@UBEHXZ),該符號在函數 __catch$?open@DBwrapper@@QAE_NXZ$0 中被引用
1>DBwrapper.obj : error LNK2019: 無法解析的外部符號 "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall oracle::occi::SQLException::getMessage(void)const " (?getMessage@SQLException@occi@oracle@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ),該符號在函數 __catch$?open@DBwrapper@@QAE_NXZ$0 中被引用
1>DBwrapper.obj : error LNK2019: 無法解析的外部符號 "public: static class oracle::occi::Environment * __cdecl oracle::occi::Environment::createEnvironment(enum oracle::occi::Environment::Mode,void *,void * (__cdecl*)(void *,unsigned int),void * (__cdecl*)(void *,void *,unsigned int),void (__cdecl*)(void *,void *))" (?createEnvironment@Environment@occi@oracle@@SAPAV123@W4Mode@123@PAXP6APAX1I@ZP6APAX11I@ZP6AX11@Z@Z),該符號在函數 "public: bool __thiscall DBwrapper::open(void)" (?open@DBwrapper@@QAE_NXZ) 中被引用
1>DBwrapper.obj : error LNK2019: 無法解析的外部符號 "public: static void __cdecl oracle::occi::Environment::terminateEnvironment(class oracle::occi::Environment *)" (?terminateEnvironment@Environment@occi@oracle@@SAXPAV123@@Z),該符號在函數 "public: bool __thiscall DBwrapper::close(void)" (?close@DBwrapper@@QAE_NXZ) 中被引用
1>E:\TaxServer\Debug\TaxServer.exe : fatal error LNK1120: 5 個無法解析的外部命令
1>組建記錄檔儲存在“file://e:\TaxServer\Debug\BuildLog.htm”
1>TaxServer - 6 個錯誤,0 個警告
========== 產生: 成功 0 個,失敗 1 個,最新 0 個,跳過 0 個 ==========

細看,發現只是有些地方出現連結錯誤,例如 SQLException,發現是程式原因,

老版本,VC7下編譯通過的程式,在VC9下不能通過。
將 
try {

    } catch (SQLException& ex) {

    }

改成

try {

    } catch (SQLException ex) {

    }


(三)問題

VS 2005 和 VS 2008 均編譯未通過 Oracle Instant Client win-x86-64-11.1.0.7.0,待解決問題.

OCCI for VC9 下載地址:http://www.oracle.com/technetwork/database/occidownloads-083553.html


(四)參考

VS2008中用OCCI串連Oracle,不需要安裝Oracle用戶端 http://hi.baidu.com/nlpack/blog/item/b3b9a3fe57f6921a08244d65.html

VS2008 C++串連oracle 用戶端的問題 http://hi.baidu.com/%D1%E3%C9%F9%C1%F4/blog/item/d5bfdca8a327b4bfca130c83.html

Oracle9i中OCCI在VC6下不能DEBUG的問題及解決方案 http://blog.csdn.net/iihero/article/details/1099908

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.