4

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

私の質問は次のとおりです。アプリケーション マニフェストで、システム DLL の特定のバージョン、たとえば comctl32.dll 6.0 が指定されているとします。その場合、LoadLibrary("comctl32.dll")すぐに正しいサイド バイ サイド フォルダーに移動しますか、それともなんらかの検索を実行しますか?

4

2 に答える 2

6

Microsoftから:

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

そうです、マニフェストが存在する場合、それは直接SxSフォルダーに移動します。

于 2008-09-30T18:26:07.683 に答える
0

ライブラリが見つからないという問題が発生したときにローダーを調べるには、「sxstrace」機能を使用できます。www.codeproject.com/KB/DLL/QueryAssemblyIdentities.aspxには、マニフェストと WinSxs の間の依存関係に関する詳細が記載されています。

于 2010-09-13T17:42:39.800 に答える