代码之家  ›  专栏  ›  技术社区  ›  ng5000

C++在C++客户端中的应用

  •  1
  • ng5000  · 技术社区  · 16 年前

    我们正在考虑通过COM将一些C类型暴露给C++客户端。在项目的整个生命周期中,我们会遇到什么问题?例如,如何管理版本控制?

    在版本控制方面,从阅读上看 this 我们应该用它来装饰我们的造型 [ClassInterface(ClassInterfaceType.None)] 并使用显式接口。这样,我假设我们完全控制将向COM客户机公开的接口。

    事先谢谢。

    3 回复  |  直到 16 年前
        1
  •  2
  •   Jakob Christensen    16 年前

    由于您正在使用C++客户端,因此应该明确使用早期绑定的显式接口。调度接口在使用脚本客户端(如VBS)时很有用,但它们对于C++客户端来说很少有用。

    版本化接口的唯一方法是创建一个新接口(可能继承自原始接口)。当使用显式接口时,您可以完全控制这个过程。

    这意味着您应该为打算通过COM公开的每个类创建一个接口。不要忘记用comvisible和guid属性标记每个接口和类。另外,所有类都必须有一个默认的构造函数。

        2
  •  1
  •   Community CDub    8 年前

    您必须了解guid属性( including this )以保持二进制兼容性,并且仅在必要时重建客户端。

    另外,您可能对ComVisible属性感兴趣, helps reduce registry pollution .

        3
  •  1
  •   ima    16 年前

    要完全控制COM接口,请在MIDL中定义它们。在C++项目中构建具有这些接口的类型库,然后将类型库导入到C语言中,并实现接口。

    这种方法对于复杂的接口很有用,因为在这些接口中,封送并不简单。

    版本应该是COM样式,更改guid,添加新的或继承的接口。