【问题标题】:COM object c++/cliCOM 对象 c++/cli
【发布时间】:2013-02-02 00:35:48
【问题描述】:

我正在尝试使用 maged c++/cli 程序集作为 html 中的对象。

<object classid="http://127.0.0.1/xxx/yyy_CLI.dll#FooClass" id="dummy" ></object>

班级好像是这样的

#pragma once

using namespace System;
using namespace System::Runtime::InteropServices;

[Guid("D81FDD51-ABB0-480b-A5F9-0DE209C8456E")]
[ComVisibleAttribute(true)]
public interface class IFooClass
{
    virtual void Initialize() = 0;
};

[Guid("D0556663-B16C-403f-B6E1-C5154BE54EF9")]
[ComVisibleAttribute(true)]
public ref class FooClass: public IFooClass
{
public:
    FooClass(void);
    virtual ~FooClass(void);

    virtual void Initialize();

};

但是,当 javascript 尝试调用 Initialize 方法时,它会说 “...错误:对象不支持此属性或方法...”

我做错了什么?

【问题讨论】:

    标签: javascript windows internet-explorer com c++-cli


    【解决方案1】:

    我可能已经离开这里了,自从我接触 COM 以来已经有好几年了,但它是这样的:

    我认为您需要通过InterfaceType 属性设置接口类型。类似于:

    [InterfaceType(ComInterfaceType::InterfaceIsDual)]
    [Guid("D81FDD51-ABB0-480b-A5F9-0DE209C8456E")]
    [ComVisibleAttribute(true)]
    public interface class IFooClass
    {
    ...
    }
    

    另外,您需要使用Tlbexp.exe(类型库导出器)将托管类导出到 COM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 2012-01-17
      • 2012-12-15
      • 2014-03-05
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多