1

Windowsに実行可能ファイルがある場合は、DUMPBINユーティリティ(Visual Studioなどに含まれています)を使用してそのインポートセクションを表示できます。

インポートされたすべてのDLLのリストを取得するには、次のようなものを実行できます(任意の例)。

C:\Programme\GIMP-2.0\bin>dumpbin /IMPORTS gimp-2.4.exe | grep -i \.dll
    libgimpcolor-2.0-0.dll
    libgimpmath-2.0-0.dll
    libgimpmodule-2.0-0.dll
    libgimpthumb-2.0-0.dll
    libgimpwidgets-2.0-0.dll
    libart_lgpl_2-2.dll
    libfontconfig-1.dll
    freetype6.dll
    libgdk-win32-2.0-0.dll
    libgdk_pixbuf-2.0-0.dll
    libglib-2.0-0.dll
    libgobject-2.0-0.dll
    libgthread-2.0-0.dll
    libgtk-win32-2.0-0.dll
    intl.dll
    libpango-1.0-0.dll
    libpangoft2-1.0-0.dll
    libgimpbase-2.0-0.dll
    libgimpconfig-2.0-0.dll
    KERNEL32.dll
    msvcrt.dll
    msvcrt.dll
    USER32.dll

別の質問で、独立したDLLの場合、ローダー(DLLをアドレス空間にマップしてDllMain関数を呼び出すコンポーネント)が、インポートセクションに表示される順序でDLLをロードすることを推測しました。

:ローダーは依存関係を解決する必要があるため、これは明らかに独立したDLLにのみ適用できます。そのため、他のDLLに依存するDLLは、常に次々とローダーになります。したがって、この質問は、独立した(システム以外の)DLLにのみ適用できます。

上記の私の(任意に選択された)例にとどまるために、

C:\Programme\GIMP-2.0\bin>dumpbin /IMPORTS libgimpcolor-2.0-0.dll | grep -i \.dll
Dump of file libgimpcolor-2.0-0.dll
    libglib-2.0-0.dll
    libgobject-2.0-0.dll
    msvcrt.dll

C:\Programme\GIMP-2.0\bin>dumpbin /IMPORTS libgimpmath-2.0-0.dll | grep -i \.dll
Dump of file libgimpmath-2.0-0.dll
    libglib-2.0-0.dll
    libgobject-2.0-0.dll
    msvcrt.dll

C:\Programme\GIMP-2.0\bin>dumpbin /IMPORTS libgobject-2.0-0.dll | grep -i \.dll
Dump of file libgobject-2.0-0.dll
    libglib-2.0-0.dll
    KERNEL32.dll
    msvcrt.dll

C:\Programme\GIMP-2.0\bin>dumpbin /IMPORTS libglib-2.0-0.dll | grep -i \.dll
Dump of file libglib-2.0-0.dll
    iconv.dll
    intl.dll
    ADVAPI32.DLL
    KERNEL32.dll
    msvcrt.dll
    msvcrt.dll
    OLE32.dll
    SHELL32.DLL
    USER32.dll
    WS2_32.DLL

libgimpmathその意味でlibgimpcolor独立したDLLです。したがって、ここでの質問は次のようになります。ローダーはインポートセクションの最初に来るので、常にlibgimpcolor前にロードされますか?libgimpmath

4

1 に答える 1

5

独立した DLL の場合、ロード順序は実際には IAT の順序と同じです。

Michael Grier の MSDN ブログから

実装は線形/順次です。したがって、静的インポート テーブルでのインポートの順序も重要です。[...] 何らかの理由でリンカが静的インポートの順序を逆にすると、逆になります。

于 2011-06-17T09:02:35.217 に答える