- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
如果您在 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
我现在有 speculated in another question 对于独立的 DLL,加载程序(将 DLL 映射到地址空间并调用其 DllMain 函数的组件)将按照 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
libgimpmath
和 libgimpcolor
在这个意义上是独立的 DLL。所以这里的问题是:Loader 是否总是在 libgimpmath
之前加载 libgimpcolor
因为它首先出现在导入部分?
最佳答案
对于独立的DLL,加载顺序确实和IAT的顺序一样。
From Michael Grier's MSDN Blog
The implementation is linear/sequential. Therefore even the order of the imports in your static import tables matters. [...] If the linker for some reason reverses the order of the static imports, you'll see the opposite.
关于windows - NT DLL Loader 是否按照可执行文件导入部分的顺序加载 DLL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6382560/
所以我没有做很多 Win32 调用,但最近我不得不使用 GetFileTime()和 SetFileTime()功能。现在虽然我的程序没有正式支持 Win98 和更低版本,但人们仍然在那里使用它,我尽
我正在做一个应用程序虚拟化项目。所以我在 NT 级别挂接应用程序并将注册表调用定向到我的虚拟注册表。在运行任何应用程序时,如果我转到"file"->“打开”。我几乎没有像下面这样的注册表调用: ZwO
代码如下: 登陆时记录cookies页面代码 <!--#include file="md5.asp"--> //32位md5加密文件,一定得调用,该文
代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%> <!--#include v
我想深入研究 ntdll!NtQueueApcThread,看看在执行系统调用指令后会发生什么。根据文档(Intel® 64 and IA-32 Architectures Software Deve
显然,EASEUS Partition Master程序可以显示图形之前 Windows GUI 启动(即,它在启动时运行 CheckDisk 的同时运行)。 什么我已经知道 : 这可能需要没有很好记
我正在查看 Windows API 的事件跟踪,根据文档和我运行的一些测试,似乎如果已经有内核记录器在运行,则 API 会发送 ERROR_ALREADY_EXISTS 调用 StartTrace 时
nt.stat_result 是什么类型的对象? nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, st
我开发了中间件,为我们组织内多个平台上的多个客户端应用程序提供 RPC 功能。中间件是用 C# 编写的,并作为 Windows NT 服务运行。它处理诸如对网络共享的文件访问、数据库访问等事情。中间件
我正在尝试替换一些遗留的 DefineDosDevice 用户空间代码(由于提升的和正常的 session 由不同的 DosDevice 存储表示,因此在具有管理员用户的 Vista 上不起作用,因此
我目前正在尝试调试系统死锁,但我很难理解这一点。 Child-SP RetAddr : Args to Child
我想将设备路径转换为文件路径。 我想通过进程id获取进程名,所以我用的是这段代码 PsLookupProcessByProcessId(processId,&pEProcess); ObOpenObj
我已经为 Windows XP 开发了一个驱动程序,它能够监控进程的执行。 回调函数使用标准 WDK API (PsSetCreateProcessNotifyRoutine) 接收通知。 驱动程序然
我正在为我的笔记本电脑编写一个自定义触摸板驱动程序,因为它在 Windows 下的支持非常糟糕。我已经弄清楚了协议(protocol),我准备继续实现它,但我对如何去做有点困惑。它是一个多点触控触摸板
我需要知道如何从用户输入的文件中提取目录信息,以下面的代码为例: ECHO Drag and drop your .txt file here, after that press Enter: SET
我正在使用脚本创建 SQL Server 复制。当我尝试执行 作业失败。无法确定作业 L3BPT2M-Atlas-14 的所有者 (STAR\moorer7) 是否具有服务器访问权限(原因:无法获取有
你遇到过这种问题吗? 我试过: telnet localhost 3306 连接失败。 我可以在任务管理器中看到mysqld-nt.exe(我使用的是windows平台)。 所以我重启了服务器,就ok
我有一个名为 a 的数组,我想在数组 a 的每个 nt-h 元素之后插入一个元素。例如,我想将字符串 XXX 放在数组 a 的每个 3 元素之后,结果得到一个新数组 b 如下例所示: let a =
我的问题是:如果这个文件(非常重要)很小(不到一个簇,只有几个字节),怎么可能得到文件磁盘偏移量。 目前我使用这个 Windows API 函数: DeviceIOControl(FileHandle
在 Windows 本地网络上,我有一个 MySql 数据库、几个客户端应用程序(仅查询数据库)和一个定期填充数据库的 Windows NT 服务。我正在寻找存储数据库凭据的最佳方式,以便所有应用程序
我是一名优秀的程序员,十分优秀!