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

Pass object from Javascript to C++/CX based on C++/CX interface - Windows Runtime Components

本文关键字:C++ 接口 CX CX-Windows 组件 运行时 Javascript 对象      更新时间:2023-09-26

我是Windows运行时组件的新手,一直在尝试如何实现以下目标。

我想在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

我找不到任何关于如何实现这一点的文档或示例,如果有人能为我提供一个如何实现的示例,我将不胜感激。

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