質問

パスなしで LoadLibrary を呼び出すと(たとえば、 LoadLibrary(" whatever.dll"))、Windowsは通常、標準の検索アルゴリズムに従います。 EXEの検索に使用します。

これは、アプリケーションマニフェストがシステムDLLの特定のバージョン(comctl32.dll 6.0など)を指定しているとします。その場合、 LoadLibrary(" comctl32.dll")はすぐに正しい並列フォルダーに移動しますか、それとも何らかの検索を実行しますか?

役に立ちましたか?

解決

Microsoftから:

  

アプリケーションは、フルパスを指定するか、DLLリダイレクトを使用するか、マニフェストを使用することにより、DLLのロード元を制御できます。これらの方法のいずれも使用されていない場合、このトピックで説明されているように、システムはロード時にDLLを検索します。

したがって、はい、マニフェストが存在する場合、直接SxSフォルダーに移動します。

他のヒント

ライブラリが見つからないという問題が発生したときにローダーをプローブするには、" sxstrace"特徴。 www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspx はいくつかの詳細を提供しますマニフェストとWinSxsの依存関係について。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top