微软CLR Interop Team的CodePlex主页上线!Interop Assistant代码公开!

P/Invoke Interop 助手 P/Invoke Interop Assistant,它支持托管代码和非托管代码之间的方法签名的转换,而且直接生成相关的C#或者是VB的方法调用代码。这个签名的转换,不只是适用于Windows的方法签名,只要给定一个C头文件,就可以转换成为相关的C#的import方法签名 作者:玛玛哈哈m 链接:https://www.jianshu.com/p/6b65175ce1d9 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 立即下载

经过一段时间的筹备,在Team的几位PM的共同策划之下,在CodePlex上面的CLR Interop主页终于上线了。CodePlex是微软公司开办的一个开源网站,上面的项目主要以.NET相关为主。我们CLR Interop Team决定在这里建立一个主页,专门用于存放内部成员所开发的Interop相关工具。主页的地址是:http://www.codeplex.com/clrinterop

可能有些朋友还不清楚CLR Interop Team究竟是从事什么方面的开发,这里简单介绍一下。CLR,也就是Common Language Runtime(公共语言运行时),相信大部分朋友比较熟悉,是微软公司开发的一个虚拟机,用于运行基于中间代码(Intermediate Language,简称IL)的.NET程序,支持多种语言以及混合编程(C#/VB/C++/...),支持垃圾收集等。从事CLR开发的CLR Team比较大,大概有一两百来人。CLR Interop Team则是CLR Team中的专门关注托管代码和非托管代码交互的一个Team,成员分布在上海和美国,共同合作开发维护Interop相关的功能,如P/Invoke, Reverse P/Invoke, COM Interop以及相关工具(TlbImp、TlbExp、RegAsm)等。

现在CodePlex主页上面的项目目前暂时只有一个,就是我在1月份MSDN Magazine发布的文章中所介绍的P/Invoke Interop Assistant(不过这个工具并非由CLR Interop Team成员编写,而是由来自VB Team的Jared编写的)。这个工具极大的方便了开发者对P/Invoke的使用,可以直接生成某个指定API的C#/VB的声明代码,供开发者直接使用,而无需参照MSDN上面的函数原型自己编写,提高了生产率,并且减少了出错的可能。更强大的功能是,可以直接从C编写的函数声明(目前还不支持C++)生成对应的C#/VB代码。除此之外,这个工具还可以查看已有的Assembly中的p/invoke或者COM Interop的函数声明,提示对应的非托管函数的原型以及关于数据转换(Marshalling)相关的一些提示和建议。感兴趣的朋友可以在之前我提到的文章上面找到更加详细一些的介绍,地址为:http://msdn.microsoft.com/en-us/magazine/cc164193.aspx。

对于开发人员来讲,P/Invoke Interop Assistant的实现也许更有兴趣。对编译器实现感兴趣的朋友,可以参考工具中分析C代码的实现,对于研究编译器实现中的词法分析和语法分析的内容是有一定帮助的。此外,P/Invoke Interop Assistant还使用了Reflection读取Assembly中的元数据,对此感兴趣的朋友也可以拿来参考。最后,P/Invoke Interop Assistant使用了Code Dom来直接生成C#/VB代码,避免了直接使用字符串拼接的尴尬。最后需要提一下的是,因为作者Jared是来自VB Team,因此他的代码全部是由VB.NET写成,有些不太熟悉VB.NET的朋友可能会不太习惯,不过应该不会影响阅读。

P/Invoke Interop Assistant的代码可以在这里下载:http://www.codeplex.com/clrinterop/SourceControl/ListDownloadableCommits.aspx

P/Invoke Interop Assistant交互助手 可以把C/C++中的数据类型、结构体数据格式转换为C#或者VB版本中的对应格式类型。很方便 立即下载

相关推荐

《CLR via C#》非托管代码互操作性提到的P/Invoke Interop Assistant

《CLR via C#》非托管代码互操作性提到的P/Invoke Interop Assistant开发工具,包含源代码,是从网站:http://clrinterop.codeplex.com/ 上下载的,作为备份

C# 获取机器的硬件信息(CPU ID序列号, 主板信息,硬盘序列号,系统信息)

在很多情况下,你可能都需要得到微机的硬件信息。比如:你想给你的软件加锁,不让别人随便访问。 最有效的办法是获取CPU的序列号,然后让你的软件只能运行在有这样的CPU序列号的机器上。众所周知, CPU序列号是唯一的!因此,这样就可以为你的软件加锁了。 另外一个需要硬盘信息的例子是:硬盘有几个分区,每个分区各有多少剩余空间。当你正在做一个多媒体 应用程序的时候,你可能也需要获得有关声卡、显卡的

凉亭共饮 957

interop-example:C# CLR Win32 互操作示例

互操作示例 C# CLR Win32 互操作示例项目 此示例是在 Visual Studio 2013 中使用 C# .NET 4.5、C++/CLR 和 Win32 C++ 编写的。 此项目的目的是演示如何使用 CLR 包装器从 C# 中利用本机 Win32 库。 为简单起见,MathFunc dll 取自。 CLR 包装器和 C# 代码是我开发的,目的是学习和分享如何在不使用 P/invoke 的情况下实现本机库和 C# .NET 之间的互操作。 重要的提示: C# 可执行文件要求 MathFuncDll 位于工作目录中。 添加了构建后事件以自动将 dll 复制到输出目录中以避免 FileNotFound 问题。

CLR Via C# 3rd 阅读摘要 -- Chapter 1 - The CLR's Execution Model

CompilingSource Code Into Managed Modules1.托管模块的组成:PE32 / PE32+ HeaderCLR HeaderMetadataIL Code2.元数据的用途:编译时不再需要头文件和类型库;为IDE提供智能感知(IntelliSense)特性;让CLR验证并执行哪些是“类型安全”(type-safe)的操作;序列化-反序列化;...

weixin_30768661的博客 193

工业互联网工控安全与工业质检AI大模型建设方案.pptx

工业互联网工控安全与工业质检AI大模型建设方案.pptx

最新,弱小目标检测数据集,持续更新中。

梳理了最新的下弱小目标检测数据库,方便后续开发使用

weixin_43331421的博客 4092

CLR Interop的开源项目

我的同事们最近在codeplex上发布了tlbimp的新版本。同时也在我们团队的博客上,第一时间里给出了介绍。参见以下链接: http://blog.csdn.net/SilverlightShanghai/archive/2009/03/13/3987754.aspx 微软越来越重视开源阵营,我们也在尝试着做一些开源项目。codeplex就是一个汇聚了微软开源项目的网站。我们CL

mountaintai二世的运动场 1670

【最全选型攻略-盘点篇】市面上有哪些靠谱的工业3D相机品牌?(双目、结构光、TOF、激光三角)

选工业3D相机,选最靠谱的品牌,选最Match你的产品,看这一篇就够了!

jiqishijueyingdi的博客 1万+

C#之P/Invoke

PInvoke Resource 一、P/Invoke Instruction: Link: An Introduction to P/Invoke and Marshaling on the Microsoft .NET Compact Framework P/Invoke, or Pinvoke stands for Platform Invocation Services.  PI

Angelo Lee's Blog 1591

新硬盘到手,在统信UOS或麒麟系统上怎么认?保姆级教程从识别到挂载一步到位

本文提供新硬盘在统信UOS或麒麟KYLINOS系统上的完整配置指南,从识别物理硬盘到挂载全流程详解。通过终端命令如df和lsblk,帮助用户完成硬盘识别、分区、文件系统创建及挂载配置,确保新硬盘顺利投入使用。

weixin_30698297的博客 441

RAD Studio 12安装全攻略:从下载到破解InterBase的完整流程(附KeyPatch使用技巧)

本文提供RAD Studio 12的完整安装指南,包括系统要求、安装步骤及InterBase数据库的高效配置方法。详细介绍了如何使用KeyPatch工具进行许可证处理,并分享了IDE优化和开发技巧,帮助开发者快速上手这一强大的跨平台开发工具。

q6r7s8t9的博客 946

CLR Interop

访Silverlight中国团队:从事最底层CLR核心代码研发 2008-05-01 00:00作者:优快云出处:天极网责任编辑:dizzarz   微软自去年9月首次发布Silverlight后,又立刻在半年后的MIX08大会上推出了Silverlight 2 Beta1,新版的网页开发工具Expression Web 2也已随 Expressio...

231

ArcGIS学习记录—SHP文件转换为KML KMZ数据,并显示面要素相应的标注

使用相应软件操作获取KMZ数据得以下发到外业调查人员,使得矢量数据能够更显而易见,可视化,让外业人员的工作减轻许多。(过程步骤是借鉴于网络上的相关人士给的建议,根据这些建议自己做出来的步骤,可能有些粗略,有问题的话可以再进行探讨)...

qq_41046162的博客 5万+

使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法

CLRInterop简而言之是让非托管代码与托管代码之间可以相互调用的技术。这项技术可以使开发人员重用已有的托管或非托管组建,并根据自己的需要,权衡托管代码的简易性与非托管代码的灵活性,选择适合自己实际情况的编程语言,而不用过多考虑重用的组件是用哪种语言开发的。Interop中文的意思是互通性,既然是互通,代码的调用就有两种不同的方向。本文所要讲述的是使用COM Interop技术在非

ms44的专栏 1519

基于Java+SpringBoot+微信小程序实现奶茶点单系统

再不用担心逢年过节的第一杯奶茶有没有人送了,制作一个奶茶点单系统自己当店主,开怀畅饮,一劳永逸。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 1万+

动力学约束下的运动规划算法——Hybrid A*算法(附程序实现及详细解释)

本文主要介绍动力学约束下的运动规划算法中非常经典的Hybrid A*算法,大致分为三部分,第一部分是在传统A * 算法的基础上,对Hybrid A * 算法的原理、流程进行理论介绍。第二部分是详细分析 MotionPlanning运动规划库中Hybrid A * 算法的源码,进一步深入对Hybrid A * 算法的具体细节 进行理解。 第三部分是结合前面第一部分的理论和第二部分的详细源码,对Hybrid A * 算法的流程进行综合的概括总结。

慕羽★的博客 1万+

CLR via C# 读书笔记1-9

与非托管代码的互操作 CLR 提供3种与非托管代码的交互方案: ■ 托管代码通过使用 P/Invoke 机制 来调用DLL文件中的非托管函数 许多 FCL 中定义的类型内部都有调用到 Kernel32.dll, User32.dll 等等文件中的函数。同时许多程序语言会提供托管代码调用非托管代码的简便途径,比如 C# 程序能够直接调用 从Kernel32.dll 导出的 CreateSema

sqlchen的专栏 721

【GameFramework框架内置模块】6、实体(Entity)

实体Entity就是一个实体的基本单元,类似于Unity的GameObject对象本体,然后这个本体上面附加其他各种各样组件,才能实现各种各样的功能。一般需要在游戏运行时动态加载的游戏对象,比如怪物、武器、子弹、特效,都需要给这个物体挂载一个实体Entity,这样的话就可以方便的对实例出来的对象进行管理。下面就来看一下如何使用吧。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 3136

P/Invoke Interop Assistant工具的使用方法

如果结构体定义错误的话,在使用的时候,CLR只是简简单单地抛出一个Access Violation Exception 微软提供了一个很好用的工具:P/Invoke Interop Assistant 这个工具已经开源了,你可以从这里http://www.codeplex.com/clrinterop/下载到它的源代码   自动生成Native函数或者结构在.NET程序中的声明,切换到“S...

liangzhuangdongtou的专栏 4326

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

推荐一个好工具:P/Invoke Interop Assistant (转)

在从托管代码里面调用非托管代码的时候,经常会翻阅MSDN找到需要调用的这个程序集里面的关于需要调用方法的签名,还要特别注意方法签名的写法。而且,有的时候我们找到一个非托管代码,对里面的调用方式还没有参考文档。 这个boring的过程,以前我们可以利用MSDN,相关模块的参考文档,或者利用PInvoke.net这个网站来搞定。或者,我也见过一些同行找到了一个小工具P/Invoke wizard,用...

weixin_30588907的博客 1368

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

现在就下载开源工具P/Invoke Interop Assistant -- 使用P/Invoke中进行签名转换的好帮手

P/Invoke Interop Assistant是一款帮助使用P/Invoke(及reverse P/Invoke)的开发人员进行托管代码与非托管代码之间签名转换的小工具。在一月份的MSDN杂志的网站上,我们曾经发布过它的第一个版本。经过整个团队的努力,现在我们终于把它搬上微软的开源网站CodePlex,和更多的开发人员共享它为开发工作带来的便捷,并提供全部的源代码,供大家参考和利用。经常

CLR & Silverlight上海研发团队Blog 4204

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

P/Invoke Interop Assistant工具C到C#自动转换

C#互操作的类型基本位于System.Runtime.InteropServices命名空间下,本系列随笔主要记录本人在开发过程中使用的到一些类型函数、技巧及工具 计算类型的大小 int size = sizeof(GLYCOUNTER);//只能作用于unsafe代码上下文 获取类型实例的大小 Marshal.SizeOf(counters) 结构体与指针类型互相转换 //指针->结构体...

weixin_30328063的博客 604

利用P/Invoke Interop Assistant写一个最简单的CLR程序

刚刚听过MSDN Webcast关于P/invoke的讲座,讲师张羿做了一个最简单的调用 user32.dll 的 MessageBox 函数的范例。让我想起当年学VB6时的API调用,是一个道理。记得那时候就有一个 API 辅助查询工具,P/Invoke Interop Assistant 与那个功能类似,使用它就不必自己去查找 MSDN 或者程序的头文件信息了,甚至不必

咖喱开发点滴 1140

C#人脸识别入门篇-STEP BY STEP人脸识别—静态照片人脸检测

本文讲解如何使用虹软SDK实现人脸识别功能

feishixin的专栏 1万+
上一篇: 什么是System.__ComObject: 强类型RCW和弱类型RCW
下一篇: 【预告】我主讲的MSDN Webcast之二:公共语言运行库(CLR)开发系列课程(2):Pinvoke 进阶(Level 300)
ATField
博客等级 码龄25年 673粉丝 119原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值