`

C#调用C++的库 P/Invoke工具集

阅读更多

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

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.

 

PInvoke Visual Studio Add-in menu itemPInvoke Visual Studio Add-in dialog

 

The second – in my opinion more interesting – tool is the P/Invoke Interop Assistant(here’s a more in-depth articlethe 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 【带书签目录】

    《精通.NET互操作P/Invoke,C++Interop和COM Interop》介绍Windows平台上的托管代码与非托管代码之间进行互操作的各种技术,包括由.NET提供的各种互操作方法、属性以及各种工具的用法及其工作原理。《精通.NET互操作...

    C#调用C/C++DLL收取中文字符处理

    C#可以通过P/Invoke调用C/C++写的DLL,一般在从DLL接收字符串时比较麻烦,本人在某个项目中遇到这个问题,  从DLL收读取字符串时遇到中文乱码,这里总结一下C#收取字符串时的处理。  C/C++字符串一般通过char* ...

    C#中调用C++ DLL(P/Invoke)

    为了能用上原来的C++代码,只好研究下从C# 中调用DLL  首先必须要有一个声明,使用的是DllImport关键字:  包含DllImport所在的名字空间  using System.Runtime.InteropServices;  public class XXXX{  ...

    P/Invoke获取CultureInfo

    利用P/Invoke获取更改后的系统CultureInfo

    C#调用C/C++ Dll中函数实例代码

    实例代码说明如何在托管的C#代码中调用非托管的Win32 API或者自己用C/C++写的Dll中的函数,以及如何传递输入、输出字符串参数,结构类型参数等问题。

    c++与c#互调的例子

    一个c#与c++互调的例子,c#调用c++的dll,c++调用c#的方法和事件

    精通.NET互操作

    精通.NET互操作P/Invoke,C++Interop和COM Interop》介绍Windows平台上的托管代码与非托管代码之间进行互操作的各种技术,包括由.NET提供的各种互操作方法、属性以及各种工具的用法及其工作原理。《精通.NET互操作P/...

    Invoke Interop Assistant

    它支持托管代码和非托管代码之间的方法签名的转换,而且直接生成相关的C#或者是VB的方法调用代码。这个签名的转换,不只是适用于Windows的方法签名,只要给定一个C头文件,就可以转换成为相关的C#的import方法签名

    在C++中反射调用.NET的方法(一)

    为什么要在C++中调用.NET 一般情况下,我们常常会在.NET程序中调用C/C++的程序,使用P/Invoke方式进行调用,在编写代码代码的...详细的过程,可以参考之前我这篇文章:《C#调用C和C++函数的一点区别》 有时候,我们也会

    Chromium web browser,js可调用c#函数,用 .net 2.0封装的CEF

    cefsharp是用c++结合c#写的dll库,cef.glue是用纯c#invoke winapi的方式实现的. Cef.glue 官网下载的代码是.net 4.5的,没有js c#交互的演示代码。这个代码是做了修改后用.net 2.0 重新编译的。提供了 js c#交互的...

    kmeans算法C#

    K-Means算法是聚类算法的一种。 此例用C++实现算法本身,然后通过C#调用(P\Invoke)C++导出的函数来完成。

    pinvoke_CSharpe

    C# 调用 C++ 简单调用

    UWP中重用C/C++代码时踩过的一些坑

    标题中提到的UWP,主要是指用C#来写UWP的主工程,开发过程中可能需要调用C/C++实现的库。  为什么需要调用C/C++的库呢,举个例子,开源库OpenSSL实现了许多加密算法,稳定快速,我们想在应用中调用;再比如,应用...

    C#如何调用原生C++ COM对象详解

    做了这方面的研究,但最终我没有使用这套技术,因为对IDispatch::Invoke的分发太麻烦了,又不能借助ATL与VS开发环境的IDL能力。所以没有继续研究事件订阅(C#是event,C++COM是IConnectionPoint)。 C++中需要做的:...

    CppGLESXamarin:在C#(Xamarin)应用程序中使用C ++ OpenGL的模板解决方案

    对于Windows平台,使用C ++运行时组件桥接到C#,而在Android上,使用共享库和P / Invoke。 计划同时支持iOS和Xamarin.Forms,但这只有在使用Mac的人做出贡献之后以及Xamarin.Forms在VS 2015上开始在Android上运行...

    精通.NET互操作 P_Invoke,C++Interop和COM Interop

    使用托管语言调用Native dll必备,写的很细致,可以作为字典来查的。

    SimpleSocket:一个 用 C# 调用 Win Socket 2 的 程序 , 对 Win Socket 2 简单 的 调用

    SimpleSocket一个 用 C# 调用 Win Socket 2 的 程序 , 对 Win Socket 2 简单 的 调用用 C++ 对 Win Socket 2 简单的 包装 , 再用 C# 调用 。测试结果 可以达到 每秒请求数 2万 , 和 System.Net.Sockets Socket 一...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    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...

    opencv.net:来自 https

    这些绑定是在一年内开发的,包括许多其他尝试中缺少的功能,即: 跨平台 Mono 兼容性(仅使用 P/Invoke) 非常接近 100% 支持最新的 C API(包括未记录的函数) 所有支持的方法、类和枚举成员的完整文档/智能感知...

Global site tag (gtag.js) - Google Analytics