未能載入檔案或程式集

2021-09-25 18:55:47 字數 1808 閱讀 2461

不要做a位**修改為b位**的無用功。

也不要做用a位**直接呼叫b位**庫這樣複雜、這樣容易出錯的傻事。

只需讓a位、b位**的輸入輸出重定向到文字檔案,或修改a位、b位**讓其通過文字檔案輸入輸出。

即可很方便地讓a位、b位兩種**之間協調工作。

關於.net編譯的目標平台(anycpu,x86,x64)***

今天將呼叫sap的rfc函式的c#介面程式正式放到客戶伺服器,更新後反饋x64系統的電腦提示問題。調查出來是相容性的問題。

問題1:未能載入檔案或程式集「sap_inte***ce, version=1.0.5175.26635, culture=neutral, publickeytoken=null」或它的某乙個依賴項。試圖載入格式不正確的程式。

調整成x86,結果畫面可以啟動了,仍然有問題

問題2:system.runtime.interopservices.comexception (0x80040154): 檢索 com 類工廠中 clsid 為 的元件時失敗,原因是出現以下錯誤: 80040154。

最終原因查明是:exe最好設定成x86,系統就算是64位也可以相容,呼叫的dll要設定成anycpu(它是由呼叫的exe決定的),最後com元件部分因為只有x86的版本,決定了前面exe和dll都需要是x86。

今天有專案的**收到客戶的反饋,要求所有的exe工程的目標平台全部指定成x86,而所有dll工程的目標平台全部指定成anycpu 。

下面我們一起看看這個目標平台有什麼作用,各選項有什麼差別吧。

在visualstudio中,在編譯設定中有如下選項:

x86: 將程式集編譯為由相容 x86 的 32 位公共語言執行庫執行。

x64: 將程式集編譯為由支援 amd64 或 em64t 指令集的計算機上的 64 位公共語言執行庫執行。

anycpu:(預設值)將程式集編譯為在任意平台上執行。

itanium: 將程式集編譯為由採用 itanium 處理器的計算機上的 64 位公共語言執行庫執行。

具體行為如下:

在 64 位 windows 作業系統上:

用 x86 編譯的程式集將在 wow64 下執行的 32 位 clr 上執行。

用 x64 編譯的程式集將在 64 位 clr 上執行。

用 anycpu 編譯的可執行檔案將在 64 位 clr 上執行。

用 anycpu 編譯的 dll 將在與載入它的程序相同的 clr 上執行。

在 32 位 windows 作業系統上:

用 x86或anycpu 編譯的程式集將在 32 位 clr 上執行。

用 x64 編譯的程式集無法執行。

搞清楚這些差異以後,回過頭來看看客戶要求的東西,有沒有道理吧。

首先有一點是知道的,客戶希望程式能夠在winxp以上的各系統中執行(不管是32位還是64位)。

因此,不可能選x64,itanium這種針對特殊處理器的也不會去選。

那都選擇any cpu這種預設方式有沒有問題呢?

首先看看any cpu和x86的可執行檔案(exe)在32位和64位下有什麼區別吧,

any cpu在32位下,exe將以32位執行,而在64位下,exe將以64位執行。而x86的話,始終以32位執行。

客戶希望使用的x86,也就是不希望64位下用64位方式執行exe程式。我分析的原因是由於系統中可能存在第三方的32位dll,一旦使用64位執行的exe,在呼叫到32位的dll時,將無法呼叫。

而dll,客戶則希望採用any cpu,我分析的原因是dll的實際執行方式是受呼叫它的exe所影響的,因此設為any cpu就可以了。而如果設定為x86,雖然看似沒什麼問題,但其無法在64位clr中執行了,不是太好。

c 未能載入檔案或程式集

dll檔名與載入時的dll檔名不一致,dll檔案根本不存在,即出現丟失情況,載入dll路徑錯誤,即dll檔案存在,但載入路徑不正確 程式集版本錯誤。我a.dll內部引用的b.dll是1.0版本,而實績提供的b.dll是2.0的版本,所以在winfrom設計介面就報了這個找不到依賴項的錯誤。主要原因是...

分析「未能載入檔案或程式集」

未能載入檔案或程式集 newtonsoft.json,version 4.5.0.0,culture neutral,publickeytoken 30ad4fe6b2a6aeed 或它的某乙個依賴項。找到的程式集清單定義與程式集引用不匹配。異常來自 hresult 0x80131040 為什麼我們...

未能載入檔案或程式集 系統找不到指定檔案

前言 在網上折騰了很久,終於在一次次嘗試後,把win10 vs2013 cuda8.0平台搭建成功,在檢查cuda編譯器nvcc時,沒有發現問題,但在執行cuda samples裡的各個示例時,都會出現如下錯誤 error msb4062 未能從程式集c progarm file x86 msbul...