64位win7+vs2010,串連oracle失敗

來源:互聯網
上載者:User

開發環境:

OS:⑥4位Win7

開發工具:VS2010

資料庫:Oracle11gR1(⑥4位服澲務器端,32位用戶端)

VS2010報錯資訊:資料連線不成功,請檢澲查該資料庫是否已啟動嘗試載入oracle用戶端時引發BadImageFormatException.如果在安裝32位Oracle用戶端組件的情況下以⑥4位元模式運行,將出現此問題。

參考了這篇文章,但是沒解決問題,不知道什麼原因。不過也做個收zàng,興許以後能用上。

http://www.cnВLogs.com/Creator/archive/2010/11/26/1885657.html

研究了一下午,沒搞定,最後sǐ馬當活馬醫,竟然試成功了,當時的感覺真是“山窮水盡疑無路,柳暗huā明又一村”。解決方fǎ很簡單:繼續用原來安裝好的32位的InstantClient,環境變數的Path中,在最前面添加“C:\Oracle\product\instantclient_11_2;”(這是我本機32位InstantClient的目錄),確定之後,重啟,搞定。注意,環境變數一定要放在最前面,至少是oracle相關的path中,這條要放在最前面,否則可能先檢測到⑥4位的目錄,程式繼續報錯。

學而不思則罔,本菜鳥大概分析一下原因:vs2010的調試工具WebDev.WebServer20.exe是32位的,需要執行對應的32位oracle用戶端的程式,最關鍵的是oci.dll。而原path環境變數中的Oracle服澲務器端目錄,裡面是⑥4位的程式,包hán6*4位的oci.dll,此時vs調用6*4位的動態庫,執行報錯。我們只要讓vs先檢測到32位的oci.dll即可,通澲過修改環境變數path來實現。事後比較了一下,本機安裝的Oracle服澲務器端和用戶端,裡面的兩個oci.dll檔案大小不一樣,也驗證了我的猜測。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.