WinXP で .dll を作成しましたが、ロード時に DWMAPI.DLL が見つからないと主張しています。問題は、この DLL が Vista DLL であることです。これは、IE7 がインストールされている XP ユーザーにとって既知の問題です。IE7 をアンインストールするか、[プログラムの追加と削除] を使用して .NET Framework を修復することをお勧めします。修理をしましたが、何も変わりませんでした。「Windows の再インストール」と同等ではないより良い解決策が必要なので、IE7 をアンインストールするつもりはありません。
私は IE7 をアンインストールしようとした人々について悪いことを読んだことがあるので、その道を行くのは気が進まない。
Visual Studio 2003 (7.1) で C++ を使用しています。アプリケーションの起動時にロードを強制的に遅らせた可能性があるオプションが表示されません。DLL プロジェクトを作成したときは、デフォルト設定を使用しました。私は興味深いオプションを見つけました.Linker->Input->Delay Loaded DLLsなので、そこに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 です。)
私がやっていることをより具体的にするために、私は Maya プラグインを書いており、スクリプト エディタで常に役立つテキストを取得しています。
// 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 に「;plug-ins」を追加する必要がありました。
結局、この問題は DWMAPI.DLL とは関係ありませんでしたが、DWMAPI は一般的な問題であるため、Novell の Web サイトで DWMAPI の問題について見つけた最良のリンクをここに投稿します。基本的に、ほとんどのプログラムでは、depends.exe にこの警告が表示されますが、その横に遅延読み込みアイコンがあり、プログラムが直接的または間接的に DWMAPI を呼び出さないことが確実な場合は、問題ありません。問題は別のところにあります。遅延ロード アイコンが表示されない場合は、Visual Studio の /DELAY および /DELAYLOAD オプションを確認する必要があります。依存しているという事実は、「エラー」ではなく「警告」を私に与えたという事実は、DWMAPI が自動的にロードされていないという事実の手がかりでした。