1. 查找包含该函数的DLL
  2. 将该DLL加载到内存中
  3. 查找函数在内存中的地址并将其参数推入堆栈,以封送所需数据。 CLR只在第一次调用函数时,才会查找和加载DLL,并查找函数在内存中的地址。 当函数被调用后, CLR会将函数地址缓存起来,从而提高平台调用的效率。 在APPDomain被卸载之前,改DLL会一直驻留在内存中。 也就是说,除非关闭或者卸载AppDomain, 否则此DLL会被一直加载在应用程序的内存中
  4. 将控制权转移给非托管函数

msvcrt.dll 标准微软C运行库。

[DllImport("msvcrt.dll")]
static extern int puts(string msg);
[DllImport("msvcrt.dll")]
static extern int _flushall();
// 输出数据到控制台

vc++ 工具

  1. dumpbin.exe , 查看DLL导出函数,命令行。功能强大,可以查看所有32位 Common Object File Format(COFF) 格式的二进制文件信息,如 COFF, exe,DLL等。
  2. depends.exe, 查看导出函数, GUI

1561570180143