【问题标题】:Using IUnknown derived C++ COM object in VB6在 VB6 中使用 IUnknown 派生的 C++ COM 对象
【发布时间】:2011-09-09 08:17:33
【问题描述】:

我开发了一个基于 C++ DLL 的 COM 对象,它实现了一些 IUnknown 派生接口。如何在 VB6 中使用它? VB6 是否支持基于 IUnknown 的接口,或者我需要从 IDispatch 派生?

更新

我没有使用过 ATL。该实现基于A very simple COM server without ATL or MFC 文章。好像我需要为我的对象生成一个 .tlb 文件?!

【问题讨论】:

    标签: c++ com vb6


    【解决方案1】:

    您不需要使用 IDispatch;这只是后期绑定所必需的。

    要使用您的对象,您必须将对该对象类型库的引用添加到您的 VB6 项目中。

    【讨论】:

    • 感谢您的回答!我不需要从 IDispatch 实现所有这些东西,这很好。我已经更新了我的问题。你不知道不用 MIDL 或 MkTypLib 生成 TLB 文件的方法吗?
    • 为什么不能使用 MIDL?在 MIDL 中定义接口和 coclass 是在 C/C++ 中使用 COM 的标准部分,它不需要使用 MFC 或 ATL。
    • 这是因为 (1) 我正在使用 MinGW 编译器,(2) MIDL 输出中充斥着无意义的代码和 cmets - 我不喜欢它。
    • 您不一定必须使用 MIDL 创建的 .c 和 .h 文件;只要您确保接口定义和 GUID 与您的 C++ 代码使用的相匹配,它就应该可以工作。我不知道有任何其他方法可以生成 TLB 文件。
    【解决方案2】:

    如果接口仅派生自 IUnknown 而不是 IDispatch ,则可以在 VB6 中使用早期绑定。

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 1970-01-01
      • 2011-02-17
      • 1970-01-01
      • 2010-10-11
      • 2012-08-21
      • 2011-05-07
      • 2012-03-27
      • 1970-01-01
      相关资源
      最近更新 更多