Browse by Tags
All Tags »
CLR Interop (RSS)
.NET 4中发布了最新版本的公共语言运行时,简称CLR (Common Language Runtime) 。这个版本是CLR 2.0之后又一个新的版本,包含着CLR小组几年以来的辛勤工作。 CLR上海团队计划在未来的几个月内陆续介绍其中的一些特性,本文作为一个概览,先作蜻蜓点水,抛砖引玉。也欢迎大家回复本文,告诉我们你所感兴趣的话题,我们会进一步作深入的介绍。 CLR 简介 CLR作为.NET框架中最为底层的部件,扮演着运行托管代码虚拟机的角色,承担着诸如即时编译(Just In Time Compile),垃圾回收(Garbage
Read More...
1. 字符串Marshalling基础 在本地代码中,字符串按编码可分为ASNI字符串和Unicode字符串,按实现不同,可分为LPSTR(char*,wchar*)和BSTR。 在托管代码中,与字符串相关的有String,stringBuilder两个。 为了实现本地代码与托管代码中字符串的相互转换,Marshalling 引入了几个属性值。 BSTR系列 UnmanagedType.AnsiBStr UnmanagedType.BStr [COM Interop中为默认值] UnmanagedTYpe.TBStr
Read More...
最近在论坛上经常看到一些基本的interop的问题,给我动力写完之前的.net interop入门系列,给刚刚涉足.NET interop的朋友们一个大体上的概念。 每每谈及.NET interop,我的脑中总是出现下面一幅图: 该图代表了.net interop的四个典型场景。之前我的同事和我讨论了.NET和COM互操作的应用: 在.NET中调用COM: COM Interop入门 在COM中调用.NET: 在COM应用中使用.NET组件 , 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法
Read More...
大家好。距离上次我们发布在CodePlex上的新版本TlbImp已经过了快半年了。在这半年的时间内,除了主要进行.NET 4.0相关的新功能开发之外,我们上海CLR小组也没有忘记进行TlbImp相关功能的继续开发,于今年3月9日再次发布了TlbImp的一个新版本: http://www.codeplex.com/clrinterop/Release/ProjectReleases.aspx?ReleaseId=17579 这次版本中我们引入了两个重要功能: 1. 通过规则自定义互操作程序集以及规则自定义编辑器
Read More...
上一博中,我们用 Visual Studio 把 .NET 组件 ( 托管组件 ) 变成了 COM 服务器。本博继续这个话题,看看如何使用 .NET 工具包来完成相应的功能。 首先我们来看看今天的主题和 CLR Interop 的关系,在我们组里, interop 这个术语包含了四个范畴,即 P/Invoke, Reverse P/Invoke, COM Interop 和 Reverse COM Interop 。前二个概念通过动态连接库 (DLL) 在 native 世界和 .NET 世界中实现互通性;后两个概念顾名思义,就是和
Read More...
CLR Interop简而言之是让非托管代码与托管代码之间可以相互调用的技术。这项技术可以使开发人员重用已有的托管或非托管组建,并根据自己的需要,权衡托管代码的简易性与非托管代码的灵活性,选择适合自己实际情况的编程语言,而不用过多考虑重用的组件是用哪种语言开发的。Interop中文的意思是互通性,既然是互通,代码的调用就有两种不同的方向。本文所要讲述的是使用COM Interop技术在非托管代码方如何调用托管代码。 1. 创建托管服务器 首先让我们在Visual Studio 2008创建一个C#的Class
Read More...