在从托管代码里面调用非托管代码的时候,经常会翻阅MSDN找到需要调用的这个程序集里面的关于需要调用方法的签名,还要特别注意方法签名的写法。而且,有的时候我们找到一个非托管代码,对里面的调用方式还没有参考文档。
这个boring的过程,以前我们可以利用MSDN,相关模块的参考文档,或者利用PInvoke.net这个网站来搞定。或者,我也见过一些同行找到了一个小工具P/Invoke wizard,用这个可以直接完成这个工作。在这里可以下载到:
http://www.paulyao.com/res/pinvoke/download.aspx
但是这个工具自从2004年更新了就没再更新过了。只支持1.0和1.1的dotnet framework。
在看MSDN上面的一篇文章的时候,看到微软的zhangyi使用了一个叫做P/Invoke Interop Assistant GUI Tool的工具,P/Invoke Signature Generator。用了下,感觉非常方便。
它支持托管代码和非托管代码之间的方法签名的转换,而且直接生成相关的C#或者是VB的方法调用代码。这个签名的转换,不只是适用于Windows的方法签名,只要给定一个C头文件,就可以转换成为相关的C#的import方法签名:
Ref From:
如何使用C#调用非托管DLL函数
http://www.codeplex.com/clrinterop
Video: http://channel9.msdn.com/posts/funkyonex/The-P-Invoke-Interop-Assistant/?CommentID=420036