2014/05/02

[筆記] SQLite.dll 使用 Any CPU 編譯後的執行階段錯誤

公司某案子的另一樣東西升級後得強制把 x64 IIS 的 允許32位元關閉

然後一關 SQLite 就死了,就開始 survey SQLite 也要跟著升級的問題

姑且就叫那個要升級的是 a 元件吧 XD




如果能強力要求客戶機器都升級 64bit 那就太好了 XD (然後也不會有這篇了)

但因為客戶是老大,有些客戶那顆 a 元件還在用 XP 等級的,也不可能威脅他們換

http://jamesfancy.blog.51cto.com/2516291/1357462

但是 SQLite 官網的 dll 又只有乖乖區分 x86 x64 版本

then 就異想天開的想說,ㄟ對啊,官網明明就有提供 source code,自己拿下來 build AnyCPU不就得了

然後就....  很順利的編過了 XD

但丟上去跑之後才發現根本沒辦法用 0rz

茶了一下原來是

 private DbConnection dbConnection = new SQLiteConnection(); 


這行死掉,死因是 Interop 問題

再稍微 Google 發現

http://jamesfancy.blog.51cto.com/2516291/1357462

原來 Interop 是用 VC++ 寫出來的 native code,不是 managed code (對岸叫做托管代碼跟非托管代碼 XD)

所以沒辦法 build Any CPU

好吧 0rz

不過上面的連結是有提到解法,可以自動判斷機器調用對應的 Interop 元件

但不知道是不是在正是環境上也可以這樣,所以再看看吧 0rz

--

後來仔細看官網的下載頁面發現要下載前的說明就有啦,但眼睛遇到英文會自動被遮住 0rz

沒有留言:

張貼留言