DLL 函数的标识包括以下元素:
函数的名称或序号
实现所在的 DLL 文件的名称
例如,如果指定 User32.dll 中的 MessageBox 函数,需要标识该函数 (MessageBox) 及其位置(User32.dll、User32 或 user32)。Microsoft Windows 应用程序编程接口 (Win32 API) 可以包含每个字符和字符串处理函数的两个版本:单字节字符 ANSI 版本和双字节字符 Unicode 版本。如果不进行指定,CharSet 字段所表示的字符集将默认为 ANSI。某些函数可以有两个以上的版本。
MessageBoxA 是 MessageBox 函数的 ANSI 入口点;而 MessageBoxW 是 Unicode 版本。可以通过运行各种命令行工具,为特定 DLL(例如 user32.dll)列出函数名。例如,可以使用 dumpbin –exports user32.dll 或 link –dump –exports user32.dll 来获取函数名。
您可以在代码中将非托管函数重命名为任何所需的名称,但是要将该新名称映射到 DLL 中的初始入口点。有关在托管源代码中重命名非托管 DLL 函数的说明,请参见指定入口点。
利用平台调用,可以通过调用 Win32 API 和其他 DLL 中的函数来控制操作系统中相当大的一部分。除了 Win32 API 之外,还有许多其他的 API 和 DLL 可通过平台调用来调用。
下表将说明 Win32 API 中几个常用的 DLL。
DLL 内容说明
GDI32.dll 用于设备输出的图形设备接口 (GDI) 函数,例如用于绘图和字体管理的函数。
Kernel32.dll 用于内存管理和资源处理的低级别操作系统函数。
User32.dll 用于消息处理、计时器、菜单和通信的 Windows 管理函数。
有关 Win32 API 的全部文档,请参见 Platform SDK。有关说明如何构造用于平台调用的基于 .NET 的声明的示例,请参见用平台调用封送数据。
用vc6的DEPENDS.EXE工具察看gdiplus.dll确切函数,有时候函数名是一个很奇怪的字符串
无法再Dll中找到名为的入口点 的原因:
函数在编译成DLL后函数的名称有可能发生了改变:会在函数的前后产生一些字符 。
所以,建议使用eXeScope的软件查出函数在编译后具体变成了什么名称,只要将这些名称输入完全就可以正确找到入口函数。
可以使用 dumpbin –exports user32.dll 或 link –dump –exports user32.dll 来获取函数名