在网上看到很多网友在.NET程序中调用Win32 API,或者调用自己的VC DLL里面提供的函数的时候,总是被生成正确的C函数在C#中的正确声明而困扰,而生成C++中结构体在C#中的声明 - 天,没有什么比这个更让人恶心的事情了。因为:
1. 如果你的结构体里面包含 TCHAR字符串成员的话,需要考虑ANSI和Unicode DLL的情形。
2. 如果你的结构体里面包含数组成员,需要考虑定长的数组,而不是对应C#数据类型。
3. 如果你的结构体里面包含联合体(UNION),需要使用Explict
本文介绍了如何使用Signature Tool工具自动生成C#中调用Windows API或C++ DLL函数的声明,解决了.NET程序中P/Invoke声明的复杂性和错误可能导致的AccessViolationException问题。该工具可以从微软官方或CodePlex获取源码,并提供了自动转换、搜索和验证功能。
最低0.47元/天 解锁文章
995

被折叠的 条评论
为什么被折叠?



