将对象从Javascript传递到基于C ++ / CX接口的C ++ / CX - Windows运行时组件

时间:2016-01-06 10:25:59

标签: javascript windows runtime components c++-cx

我是Windows Runtime Component的新手,并且一直试图弄清楚如何实现以下目标。

我想在Javascript中扩展的C ++接口。

namespace MySDK {
    public interface class LoggerPlugin
    {
    public:
        virtual void Log (Platform::String^ Tag, Platform::String^ Messsage);
    };
}

C ++

namespace MySDK {
    public ref class Logger sealed : public Platform::Object
    {
    public:
        static Logger^ GetInstance ();
        void SetPlugin (LoggerPlugin^ Plugin);
    };
}

我尝试过,看起来很傻,但我不知道如何实现它。

var plugin = {
     log: function(tag, message) {
          console.log(tag + ':' + message);
     }
};

MySdk.Logger.getInstance().setPlugin(plugin);

我得到的错误是

JavaScript runtime error: Type mismatch

我找不到任何关于如何实现这一目标的文档或示例,如果有人能够提供一个如何完成此操作的示例,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

JavaScript无法实现WinRT接口。如果您想拥有插件的JavaScript实现,那么您将需要构建一个引发事件(JavaScript可以订阅)的具体类型,而不是定义虚拟方法(C ++或C#可以实现)。