我在WinXP下建立了一個.dll,聲稱它在加載時找不到DWMAPI.DLL。問題是這個DLL是一個Vista DLL,這是安裝了IE7的XP用戶的一個已知問題。建議您通過添加/刪除程序卸載IE7或修復.NET Framework。我做了修理,沒有任何改變。我不打算卸載IE7,因爲必須有更好的解決方案,這不等於「重新安裝Windows」。如何修復WinXP下的DWMAPI.DLL延遲加載依賴項?
我讀過關於試圖卸載IE7的人的壞消息,所以我不願走這條路。
我在Visual Studio 2003(7.1)下使用C++。我沒有看到可能在應用程序啓動時強制延遲加載的選項。我在創建DLL項目時只使用了默認設置。我剛剛找到了一個有趣的選項,Linker-> Input-> Delay Loaded DLL,所以我把DWMAPI.DLL放在那裏,強制延遲加載。然而,我在鏈接時得到這樣的:
LINK : warning LNK4199: /DELAYLOAD:dwmapi.dll ignored; no imports found from dwmapi.dll
..它當然試圖加載我的DLL時,並沒有改變任何事情。對此,我添加了導致DWMAPI.DLL的整個DLL樹,並且我得到了相同的消息。 (爲了記錄,它是foundation.dll-> shell32.dll-> shdocvw.dll-> mshtml.dll-> ieframe.dll-> dwmapi.dll。)
更具體地說我在做什麼,我寫瑪雅插件並獲得腳本編輯器中總是有幫助的文字:
// Error: Unable to dynamically load : D:/blahblahblah/mydll.mll
The specified module could not be found.
//
// Error: The operation completed successfully.
//
// Error: The operation completed successfully.
(mydll) //
我用的Dependency Walker最初追查問題,而這正是導致我dwmapi.dll文件。這些消息取決於給我,並dwmapi.dll文件是旁邊一個黃色的問號,它的唯一的事情:
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
傑拉德是正確的。實際上,Maya使用與Dependency Walker不同的PATH。我的插件加載了另一個生活在Maya插件目錄中的DLL(用於圖像處理),並且依賴於找到它沒有問題,但是Maya沒有。我必須在Maya.env中添加「插件」到PATH中。
鑑於此問題與DWMAPI.DLL無關,但DWMAPI是一個常見問題,我將在Novell的網站here上發佈有關DWMAPI問題的最佳鏈接。基本上,大多數程序在depends.exe中都會有這個警告,但是如果在它旁邊有一個延遲加載圖標,並且您確定程序不會直接或間接調用DWMAPI,那就沒問題。問題在別處。如果延遲加載圖標不存在,則必須查看Visual Studio中的/ DELAY和/ DELAYLOAD選項。依賴的事實給了我一個「警告」,而不是「錯誤」是DWMAPI沒有被自動加載的事實的線索。
我在其中一臺Windows 2003服務器上遇到此問題。這只是一個血腥的控制檯應用程序,但它(或其他一些依賴)聲稱也需要dwmapi.dll。我很想看到明確的答案。 +1。 – Kev 2008-10-06 07:34:28
我認爲很多意見來自Google的驅動。只搜索「dwmapi.dll」將其作爲第二個結果。 – 2009-08-14 17:25:02