我想了解DllImport的工作原理。我需要一个简单的英语解释-意味着简单的解释。

它是否与DLL导出的方法静态链接,例如“include file”指令/静态库?

还是在到达C#程序的执行点时从DLL动态调用该方法?

最佳答案

它使用两个核心winapi函数。首先是LoadLibrary(),这是将DLL加载到进程中的winapi函数。它使用您为DLL指定的名称。第二个是GetProcAddress(),这是winapi函数,它返回DLL中函数的地址。它使用您指定的函数的名称。然后,一些管道运行,使用您指定的参数为函数调用构建堆栈框架,并在找到的地址处调用函数。

是的,这是非常动态的。直到您的代码实际落在调用pinvoked函数的语句上,这种情况才会发生。技术术语是“后期绑定(bind)”,与Windows加载程序用于 native 代码的更常见的早期绑定(bind)相反。

关于c# - DllImport如何真正起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14471571/

10-11 22:42
查看更多