近期我們公司HIS軟件在調用第三方合理用葯系統的時候 ,XP系統上運行正常,而到了WIN7 系統上出現“試圖加載格式不正確的程序”這個錯誤。 醫院實施立刻把問題推到我的頭上,沒辦法 誰讓錯誤報在咱頁面上了呢。 於是拿到錯誤開始分析問題。
首先軟件在XP上是沒問題的,那么代碼很可能就是沒問題的,那么為什么會在WIN7報錯了,我第一點想到的是很可能跟操作系統有關,果斷詢問現場,得到反饋"win7是64位的操作系統,XP是32位的". 那么問題來了,我的程序編譯的時候目標平台選擇的是 “Any CPU”,也就是說在32位系統上程序會變成32位程序 而在64位上會自動變成64位程序。那么為什么還會報錯呢?
然后我百度了一下這個錯誤,博客園前輩給出了原因,我覺得很正確“
問題是因為64位進程試圖加載一個32位組件。雖然在Windows x64上可以運行64位和32位進程,但是64位代碼和32位代碼不能在相同進程上運行。代碼要么全部是64位,要么全部是32位。要加載的組件也要符合這一規律。
所以最好都是x86編譯,或者x64編譯程序
” 得到問題原因以后 我懷疑是第三方的問題,於是拿到第三方的開發QQ,詢問之下 果然他們的目標平台是 32位,而我們的是anyCPU 所以不能在同一個進程中,故報錯!
OK 找到了 錯誤原因,這個應該完全是第三方原因,如果我們每軟件的目標平台都是ANY cpu的話 就不會出現兼容問題了,但是對方好像不太願意改,不管了 讓實施去溝通吧 反正我是不會改的。。。。。