【问题标题】:How to make a COM in language other than C/C++?如何用 C/C++ 以外的语言制作 COM?
【发布时间】:2011-03-28 08:53:51
【问题描述】:

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

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

非常感谢。

【问题讨论】:

    标签: c++ vb.net com


    【解决方案1】:

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

    C++ 中没有这种胶水,你必须自己写。或者利用 ATL 之类的类库。然而,它确实允许超越 oleauto 的范围,例如实现派生自 IUnknown 的接口和创建自定义编组器。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢凯特。我对VB不熟悉。但似乎 VB 为我们节省了很多精力。
      猜你喜欢
      • 2014-02-24
      • 2011-02-20
      • 2021-02-27
      • 2010-10-20
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      相关资源
      最近更新 更多