2015-08-23 75 views
-1
  1. 機器A上裝有VS2012,上面有一個小型的VC++ .NET工程,我們用64位配置構建這個工程,它生成一個DLL(比如TestDLL.dll)。64位彙編程序未能加載

  2. 在同一臺機器A,如果我創建一個小型控制檯應用程序,並寫 var objBroker = new CUccxBroker();,它工作得很好, 「CUccxBroker」 是「TextDLL.dll」的一部分。

  3. 但是,如果我複製機器A所產生的DLL,並將其粘貼在機器B,寫相同的代碼就失敗,錯誤「Couldn't load file or assembly TestDLL.dll, file or one of its dependencies not found

VS versio在兩臺機器上都是相同的,不知道在我編譯機器上的代碼然後使用DLL之後開始工作。任何幫助都會很棒。

+0

聽起來像你的TestDLL.dll有一個外部引用/依賴關係,機器A有但機器B沒有。檢查你的VC++項目的參考。如果我記得正確,VC++項目可以是靜態綁定或動態綁定。靜態意味着庫/可執行文件中包含所有必需的參考代碼。動態意味着它期望引用(MS C++庫可能?)可用。 – Mmm

+0

您好@Mmm,感謝您的幫助,我忘了補充一點,如果我在機器B上構建項目,它就開始工作。在VS我應該chk的引用,對不起,我沒有C++的經驗.. – shashank

+0

如果我不得不猜測,我會說你有一個不同版本的機器B上所需的C + +庫比你A。尋找項目某處的屬性......應該有一個與靜態庫鏈接的選項,而不是動態鏈接。 – Mmm

回答

0

下載'dependency walker'工具的副本(網上提供的免費軟件)。這將以圖形方式顯示一個樹,顯示程序集的依賴關係,那些程序集的依賴關係(而非循環)等。它突出顯示哪些依賴關係丟失,從而很容易找到缺少的內容。