0

我正在尝试将 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 方法时,它会显示“...错误:对象不支持此属性或方法...”

我究竟做错了什么?

4

1 回答 1

0

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

我认为您需要通过InterfaceType属性设置接口类型。就像是:

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

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

于 2013-02-18T00:38:19.617 回答