如何用C / C ++以外的语言编写COM?

时间:2010-08-11 12:54:24

标签: c++ vb.net com

我注意到MIDL.exe只为C / C ++生成头文件( _h.h)和GUID文件( _i.c)。这有助于在C / C ++中创建COM。

如果我想用VB或其他语言创建COM怎么办? IMO,我必须先用MIDL语言定义接口,然后用MIDL.exe编译它。那么其他语言如何利用MIDL.exe的输出?

非常感谢。

2 个答案:

答案 0 :(得分:3)

像VB6和.NET这样的运行时环境将COM视为一等公民,并且不需要midl.exe提供的管道。 VB6类自动成为实现IDispatch的COM coclass。 .NET具有[ComVisible]等属性。他们的运行时环境实现了所需的粘合剂。

C ++中没有这样的粘合剂,你必须自己编写。或者利用像ATL这样的类库。但它允许超越oleauto的范围,例如实现从IUnknown派生的接口并创建自定义编组器。

答案 1 :(得分:0)

如果要在VB.NET中编写COM组件,则不会在MIDL中定义接口。相反,您将以通常的.NET方式编写托管接口和实现它的类。然后,您创建类和接口ComVisible,并安排您的项目为生成的程序集创建Com Callable Wrappers。

请记住,以这种方式创建的内容将依赖于.NET Framework。