如果你有一个可执行的,你可以查看其进口部分与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进入地址的空间,并呼吁它们的模块的状态功能)将载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

libgimpmathlibgimpcolor 都是独立的Dll在这个意义上。因此,这里的问题将是:将装载总负荷 libgimpcolor 之前 libgimpmath 因为它来第一次的进口部分?

有帮助吗?

解决方案

独立Dll、负载以确的顺序相同的IAT.

迈克尔*格里尔MSDN的博客

执行是线性/连续的。因此,即使是为了进口在你的静态导表事项。[...]如果连接为一些原因反对以静态的进口,你会看到相反的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top