p/Invoke可以使用工具辅助自动生成,以减少混淆
1、官方的支持
http://visualstudiogallery.msdn.microsoft.com/site/search?query=p%2Finvoke&f%5B0%5D.Value=p%2Finvoke&f%5B0%5D.Type=SearchText&ac=4
微软的官方扩展上也有很多
开源的工具
http://www.pin5i.com/showtopic-22763.html
看起来微软自己也是深受.NET蹩脚的P/Invoke支持的毒害,因此无奈之余发布了P/Invoke Interop Assistant工具,你可以去下面这个链接来下载这个工具:
http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe
实际上这个工具已经开源了,你可以从这里http://www.codeplex.com/clrinterop/下载到它的源代码
2、经典的讨论区
http://stackoverflow.com/questions/2495632/easiest-way-to-generate-p-invoke-code
- PInvoker: http://www.pinvoker.com
- P/Invoke Interop Assistant: http://www.codeplex.com/clrinterop
- P/Invoke Wizard: http://www.paulyao.com/res/pinvoke/pinvoke.aspx
http://www.paulyao.com/res/pinvoke/pinvoke.aspx
3、社区评论
http://through-the-interface.typepad.com/through_the_interface/2011/04/pinvoke-tools.html
The first tool is the PInvoke Visual Studio Add-in from Red Gate Software (the UK-based provider of various development tools, including Reflector Pro). It appears to be a Visual Studio Add-in for VS2003 and 2005 (I can’t see an update for VS2008 or 2010, which also means I can’t try it). The tool provides simplified access to the excellent PInvoke.net website, to which I often refer when developing .NET apps. I don’t actually use that many P/Invoke statements that I feel I need an Add-In, though – which is perhaps why the add-in doesn’t appear to have been updated for more recent Visual Studio versions – but it seemed worth mentioning.
The second – in my opinion more interesting – tool is the P/Invoke Interop Assistant(here’s a more in-depth article, the CodePlex hosting site and a Channel 9 interview with one of the authors). This tool generates P/Invoke signatures for use from C# and VB.NET, as well as the ability to determine the P/Invoke signatures used in compiled binaries:
- Generating P/Invoke declarations while searching for commonly-used (presumably Win32) functions, structures, messages, etc.
相关推荐
《精通.NET互操作P/Invoke,C++Interop和COM Interop》介绍Windows平台上的托管代码与非托管代码之间进行互操作的各种技术,包括由.NET提供的各种互操作方法、属性以及各种工具的用法及其工作原理。《精通.NET互操作...
C#可以通过P/Invoke调用C/C++写的DLL,一般在从DLL接收字符串时比较麻烦,本人在某个项目中遇到这个问题, 从DLL收读取字符串时遇到中文乱码,这里总结一下C#收取字符串时的处理。 C/C++字符串一般通过char* ...
为了能用上原来的C++代码,只好研究下从C# 中调用DLL 首先必须要有一个声明,使用的是DllImport关键字: 包含DllImport所在的名字空间 using System.Runtime.InteropServices; public class XXXX{ ...
利用P/Invoke获取更改后的系统CultureInfo
实例代码说明如何在托管的C#代码中调用非托管的Win32 API或者自己用C/C++写的Dll中的函数,以及如何传递输入、输出字符串参数,结构类型参数等问题。
一个c#与c++互调的例子,c#调用c++的dll,c++调用c#的方法和事件
精通.NET互操作P/Invoke,C++Interop和COM Interop》介绍Windows平台上的托管代码与非托管代码之间进行互操作的各种技术,包括由.NET提供的各种互操作方法、属性以及各种工具的用法及其工作原理。《精通.NET互操作P/...
它支持托管代码和非托管代码之间的方法签名的转换,而且直接生成相关的C#或者是VB的方法调用代码。这个签名的转换,不只是适用于Windows的方法签名,只要给定一个C头文件,就可以转换成为相关的C#的import方法签名
为什么要在C++中调用.NET 一般情况下,我们常常会在.NET程序中调用C/C++的程序,使用P/Invoke方式进行调用,在编写代码代码的...详细的过程,可以参考之前我这篇文章:《C#调用C和C++函数的一点区别》 有时候,我们也会
cefsharp是用c++结合c#写的dll库,cef.glue是用纯c#invoke winapi的方式实现的. Cef.glue 官网下载的代码是.net 4.5的,没有js c#交互的演示代码。这个代码是做了修改后用.net 2.0 重新编译的。提供了 js c#交互的...
K-Means算法是聚类算法的一种。 此例用C++实现算法本身,然后通过C#调用(P\Invoke)C++导出的函数来完成。
C# 调用 C++ 简单调用
标题中提到的UWP,主要是指用C#来写UWP的主工程,开发过程中可能需要调用C/C++实现的库。 为什么需要调用C/C++的库呢,举个例子,开源库OpenSSL实现了许多加密算法,稳定快速,我们想在应用中调用;再比如,应用...
做了这方面的研究,但最终我没有使用这套技术,因为对IDispatch::Invoke的分发太麻烦了,又不能借助ATL与VS开发环境的IDL能力。所以没有继续研究事件订阅(C#是event,C++COM是IConnectionPoint)。 C++中需要做的:...
对于Windows平台,使用C ++运行时组件桥接到C#,而在Android上,使用共享库和P / Invoke。 计划同时支持iOS和Xamarin.Forms,但这只有在使用Mac的人做出贡献之后以及Xamarin.Forms在VS 2015上开始在Android上运行...
使用托管语言调用Native dll必备,写的很细致,可以作为字典来查的。
SimpleSocket一个 用 C# 调用 Win Socket 2 的 程序 , 对 Win Socket 2 简单 的 调用用 C++ 对 Win Socket 2 简单的 包装 , 再用 C# 调用 。测试结果 可以达到 每秒请求数 2万 , 和 System.Net.Sockets Socket 一...
2.3.8 具有特定值集的变量 49 2.4 基本的输入/输出操作 50 2.4.1 从键盘输入 50 2.4.2 到命令行的输出 50 2.4.3 格式化输出 51 2.4.4 转义序列 52 2.5 C++中的计算 54 2.5.1 赋值语句 54 2.5.2 算术运算 55...
这些绑定是在一年内开发的,包括许多其他尝试中缺少的功能,即: 跨平台 Mono 兼容性(仅使用 P/Invoke) 非常接近 100% 支持最新的 C API(包括未记录的函数) 所有支持的方法、类和枚举成员的完整文档/智能感知...