我注意到MIDL.exe只为C/C++生成头文件(_h.h)和GUID文件(_i.c)。它便于在C/C++中创建COM。
如果我想用VB或其他语言创建COM怎么办?首先要用MIDL语言定义接口,然后用MIDL.exe进行编译。那么,其他语言如何利用MIDL.exe的输出呢?
非常感谢。
发布于 2010-08-11 14:21:35
像VB6和.NET这样的运行时环境将COM视为一流的公民,不需要midl.exe提供的管道。VB6类自动是实现IDispatch的COM coclass。.NET具有类似于ComVisible的属性。它们的运行时环境实现所需的胶水。
在C++中没有这样的胶水,你必须自己写。或者利用像ATL这样的类库。但是,它确实允许超越oleauto的限制,例如实现从IUnknown派生的接口和创建自定义封送处理程序。
发布于 2010-08-11 14:21:14
如果您想用VB.NET编写COM组件,您将不会在MIDL中定义接口。相反,您将按照通常的.NET方式编写托管接口和实现该接口的类。然后将类和接口设置为ComVisible,并安排项目为结果程序集创建Com可调用包装器。
请记住,以这种方式创建的内容将依赖于.NET框架。
https://stackoverflow.com/questions/3458436
复制相似问题