【问题标题】:COM object instantiate in C++/CLI在 C++/CLI 中实例化 COM 对象
【发布时间】:2010-11-25 06:41:24
【问题描述】:

我是托管 C++/Cli 的新手;我有一个旧的 COM DLL,我已经在 C++/CLI 类中导入了 DLL,但我不确定如何创建 COM 对象的实例并使用它。

有人可以帮忙吗?

【问题讨论】:

    标签: c# c++-cli com-interop


    【解决方案1】:

    如果注册正确,只需尝试:

    Type typeOfCOMObject = Type.GetTypeFromProgID("COMProject.COMClass");
    object instanceOfCOMObject = Activator.CreateObject(typeOfCOMObject);
    

    然后使用强制转换或反射来访问对象的方法。

    【讨论】:

      【解决方案2】:

      有几种方法可以从 C++/CLI 访问 COM 对象。

      最简单的方法是让 .Net 运行时为 COM 对象创建一个 ma​​naged 包装器,就像 natorion 在他的回答中描述的那样。为此,您需要在 Visual Studio 中或使用 tlbimp.exe 命令生成互操作程序集。这与您在其他 .Net 语言(如 C# 和 VB.Net)中所做的相同。

      另一种方法是使用#import 指令生成native 包装器。如果 COM 对象使用大量难以编组到 .Net 的本机结构,或者如果您需要控制对象的生命周期,这是最好的方法。

      IYourComObject obj;
      obj.CreateInstance("YourComObject"); 
      

      (CreateInstance还有其他重载)

      第三种方法是忽略所有生成的包装器手动创建对象。这是您完全控制的最先进和最困难的方法。

      CoCreateInstanceEx(__uuidof(yourcomobject), NULL, CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER, NULL, 1, &instance)
      

      【讨论】:

        猜你喜欢
        • 2013-02-02
        • 1970-01-01
        • 1970-01-01
        • 2010-11-05
        • 1970-01-01
        • 1970-01-01
        • 2012-03-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多