最近写程序需要在.NET平台上调用DLL文件。在本科大四的时候其实就已经研究过了,不过再次研究这方面却又遇到了新的问题。
一、.NET平台调用DLL的理论基础。
.NET平台下(通常在C#代码实现中)调用DLL,其本质是托管代码如何去调用非托管的代码(非托管的代码通常是以DLL的形式进行封装的)。这就要用到.NET平台的平台调用服务(即Platform Invocation Services (PInvoke) )。
1平台调用的步骤:
(1)确定要调用的DLL文件的位置。
(2)装载DLL文件到内存中。
(3)确定装载到内存中的DLL函数的内存位置,并将其函数的参数压倒栈中,同时配置好各种参数。
(4)将控制转移到分托管函数中,即(3)中确定的内存中执行函数。
二、托管代码调用非托管代码的方法
有两种方法:
1直接调用DLL文件。
2调用COM接口。