将进程内COM服务器对象添加到C#应用程序

时间:2010-08-06 23:54:04

标签: c# c++ com

我是COM的新手,需要在我的c#应用程序中添加一个Server COM对象,这样我就可以调用它的方法并实现事件。我所说的文档需要一个支持COM的语言,如Visual C ++。我的应用程序是用C#编写的,所以我不确定这是怎么回事。任何方向都会受到赞赏。

我正在编写一个与串行hypercom终端通信的应用程序。该设备附带了一个DLL(com服务器接口),我将需要弄清楚如何在我的c#应用程序中使用。

我在我的项目中添加了对DLL的引用,该项目显示为类型库。在对象资源管理器中,我得到了接口和一些类等。

谢谢, 马特

2 个答案:

答案 0 :(得分:1)

您可以添加COM对象作为参考。 .NET将创建一个互操作程序集以与COM对象一起使用,就像它是.NET类型一样。

答案 1 :(得分:0)

  1. CComObjectRoot可以用作使用ATL实现的所有COM对象的基类。因此,您不必担心在C#中实现类似的东西,tlbexp将为使用ClassInterface标记的类生成所需的方法(AddRef,Release,QueryInterface)。
  2. STDMETHODIMP是一个定义,用于声明可以从COM调用的最常用方法(#define STDMETHODIMP HRESULT STDMETHODCALLTYPE)。再次,如果您的类被ClassInterface标记,您将不必担心。
  3. 当您的类实现多个接口时,C ++中需要这种构造。如果你告诉C#编译器你的C#对象实现IDispatch,IFPESOlementationEvents,我认为这不是必需的。编译器将自动编写适当的代码。
  4. 如果您不熟悉COM和C#,可能一切都没有多大意义,我建议您查看一下您可能在网络上找到的各种介绍,例如this