我注意到MIDL.exe只为C / C ++生成头文件( _h.h)和GUID文件( _i.c)。这有助于在C / C ++中创建COM。
如果我想用VB或其他语言创建COM怎么办? IMO,我必须先用MIDL语言定义接口,然后用MIDL.exe编译它。那么其他语言如何利用MIDL.exe的输出?
非常感谢。
答案 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。