C C 獨立應用程式和並行程式集疑難解答

2021-06-19 18:35:53 字數 2576 閱讀 6474

visual studio 2013

其他版本

此主題尚未評級 - 

評價此主題

如果找不到,載入 c/c++. /c c/c++ 應用程式會失敗依賴庫。 

本文介紹一些常見原因 c. /c c/c++ 應用程式無法載入,並建議步驟解決問題。

如果應用程式無法載入,因為它具有清單指定在並行程式集的依賴項,並且,程式集未安裝作為私有程式集在與可執行檔案相同的資料夾也不在本機程式集快取安裝在 %windir%\winsxs\ 資料夾,下面的錯誤訊息之一可能會因嘗試執行該應用程式的 windows 版本,則說明。

如果應用程式沒有清單並依賴於 windows 在典型的搜尋位置找到的 dll,類似於的錯誤訊息。乙個可以顯示:

如果應用程式在沒有 visual studio,因此,的計算機上部署它通過使用類似於前面部分的錯誤訊息,請檢查以下內容:

按照 理解 visual c++ 應用程式的依賴項中介紹的步驟。 

dependency walker 可顯示應用程式或 dll 的大多數依賴項。

如果您將注意到缺少一些 dll,請安裝它們在嘗試執行您的應用程式的計算機。

作業系統引導程式使用應用程式清單載入應用程式所依賴的程式集。 

清單還可以在二進位制檔案作為資源嵌入或安裝為單獨的檔案在應用程式資料夾。

若要檢查清單是否在二進位制檔案中,開啟位於 visual studio 的二進位制檔案並查詢在其 rt_manifest 列出資源。

如果找不到嵌入式清單,在應用程式資料夾為名為類似 的檔案。.manifest。

如果應用程式依賴於並行程式集,並不存在清單,則必須確保鏈結器生成清單專案中。 

檢查在 專案屬性 對話方塊的鏈結器選項 生成清單 該專案。

如果清單在二進位制檔案中嵌入,請確保 rt_manifest 的 id 此型別的二進位制檔案是否正確。 

有關使用哪個資源 id 的更多資訊,請參見 使用並行程式集作為資源 (視窗)。

如果清單在單獨的檔案中,開啟它在 xml 編輯器或文字編輯器。

有關清單的更多資訊,並部署的規則,請參見 指示。

說明

如果嵌入的清單和單獨的清單檔案,作業系統引導程式使用的嵌入式清單並忽略單獨的檔案。 

但是,在 windows xp 中,屬性是如此。單獨的清單檔案使用,並且嵌入式清單被忽略。

建議您在每個 dll 嵌入清單,因為將忽略外部清單。不過,當 dll 載入loadlibrary呼叫時。 

有關更多資訊,請參見程式集清單。

檢查清單中列舉所有程式集正確地安裝在計算機上。 

每個程式集清單中指定的名稱、版本號和處理器結構。

如果應用程式依賴於並行程式集,請檢查這些程式集在計算機上正確安裝,以便作業系統引導程式可以找到這些元素,如 搜尋順序的程式集所述。

請記住,64 位程式集不能在 32 位程序中載入,也不能在 32 位作業系統上執行。

示例目錄此清單類似於:

依賴並行程式集來安裝作為共享程式集或私有程式集安裝。

程式集清單中為共享程式集在 %windir%\winsxs\manifests\ 資料夾。

它標識程式集並列出其內容是,作為程式集組成部分的 dll:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

即檔案複製到全域性的策略重定向應用程式和程式集繫結使用並行程式集的乙個版本而不是同一程式集,另一版本的並行程式集還可以使用 發行者配置檔案—還。

您可以檢查策略在 %windir%\winsxs\policies\ 資料夾的共享程式集。

這是乙個示例策略檔案:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

此策略檔案指定請求此程式集的第 2.0.10000.0 版的任何應用程式或程式集應使用第 2.0.20121.0 中,是當前版本在系統上安裝。

如果應用程式清單中提到的程式集的版本在策略檔案中指定,引導程式查詢清單中指定在 %windir%\winsxs\ 資料夾此程式集的版本,並且,如果未安裝此版本中,載入將失敗。

此外,如果未安裝程式集第 2.0.20121.0 中,載入為請求程式集第 2.0.10000.0 版本的應用程式失敗。

但是,程式集可能也會安裝作為私有並行程式集在安裝的應用程式資料夾。

如果作業系統未能找到程式集作為共享程式集,它將查詢它作為私有程式集,按以下順序:

檢查應用程式資料夾具有名稱 .manifest 的清單檔案。

如果找到清單,引導程式從應用程式資料夾中引導程式集。

如果未找到程式集,載入將失敗。

如果找到該清單,引導程式將從 \\ 資料夾中引導程式集。

如果未找到程式集,載入將失敗。

有關引導程式如何的更多資訊搜尋依賴的程式集,請參見 搜尋順序的程式集。

如果引導程式未能找到乙個依賴程式集作為私有程式集,則載入失敗,並顯示訊息「系統無法執行指定的程式」顯示。

若要解決此錯誤,請確保是的一部分依賴程式集和 dll 它們安裝在計算機上作為私有或共享程式集。

程式集和應用程式域

程式集是一組型別和資源的集合,是乙個邏輯功能單元,多個程式集協同工作完成一定的功能。當前主要指.dll檔案或.exe 檔案 程式集清單是程式集的一部分,包含程式集名 程式版本資訊 程式集中所有檔案的列表 型別引用資訊等等 程式集可分為單檔案程式集 例如包含乙個.dll檔案 和多檔案程式集 例如包含乙...

獨立air應用程式打包

我們都很喜歡air,因為她很美麗,但又不敢使用air,因為難以推廣,實在讓人為難。但是現在我們不再為難了,為什麼?因為我們已經找到了讓air程式脫離air環境的方法。首先,我們來分析一下air程式的執行機制,air檔案安裝後會在安裝目錄生成乙個.exe檔案,此檔案在啟動時首先呼叫air執行時庫ado...

解決「應用程式無法啟動,應用程式的並行配置不正確」

應用程式事件日誌中 c windows system32 test.exe 的啟用上下文生成失敗。找不到從屬程式集 microsoft.vc80.mfc,processorarchitecture x86 publickeytoken 1fc8b3b9a1e18e3b type win32 vers...