Welcome

首页 / 软件开发 / C++ / 使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法

使用IDispatch::Invoke函数在C++中调用C#实现的托管类库方法2010-07-22 blogs.msdn.com CLR Interop简而言之是让非托管代码与托管代码之间可以相互调用的技术。这项技术可以使开发人员重用已有的托管或非托管组建,并根据自己的需要,权衡托管代码的简易性与非托管代码的灵活性,选择适合自己实际情况的编程语言,而不用过多考虑重用的组件是用哪种语言开发的。Interop中文的意思是互通性,既然是互通,代码的调用就有两种不同的方向。本文所要讲述的是使用COM Interop技术在非托管代码方如何调用托管代码。

1. 创建托管服务器

首先让我们在Visual Studio 2008创建一个C#的Class Library(类库)项目,取名为MyManagedServer,在该项目中,我们要声明并实现一个接口。

接口声明代码如下:

为了说明简单,该接口中只有一个方法,用于打印一些信息。其中的ComVisible属性至关重要,当它的值为true时,该接口才对COM可见。

view plaincopy to clipboardprint?

1.using System;
2.using System.Runtime.InteropServices;
3.
4.namespace MyManagedServer
5.{
6.[ComVisible(true),
7. Guid("79EDDA1C-F243-47C5-8954-5DEF01FA3D44"),
8. InterfaceType(ComInterfaceType.InterfaceIsDual)]
9.public interface IManagedFooClass
10.{
11.[PreserveSig, DispId(1)]
12.void PrintFoo();
13.}
14.}