我正在创建一个Firefox扩展,其中包含一个适用于Windows的XPCOM DLL。 这个DLL成功构建(我遵循http://briankrausz.com/building-a-c-xpcom-component-in-windows上的教程),DLL导出NSGetModule。我认为这应该没问题。
我将IMyComponent.xpt和MyComponent.dll复制到扩展程序的components目录。
在chrome.rdf中我添加了:
interfaces components/IMyComponent.xpt
binary-component components/MyComponent.dll
但是,DLL未注册。当我在扩展程序的JS代码中调用代码时:
const cid = "@mydomain.com/XPCOMSample/MyComponent;1";
obj = Components.classes[cid].createInstance();
我得到“TypeError:Components.classes [cid]未定义”。
我是否想念任何课程? 我怎样才能调试出错了什么?
答案 0 :(得分:0)
如上所述:
js-ctype开箱即用。 NPAPI基本上已被弃用。 XPCom是最常用的FFI接口,js-ctypes开始越来越多地被采用。有很多东西你无法通过ctypes接口实现(Mozilla-wise)。例如,现在有很多人会实现JavaScript XPCom组件,这些组件在内部使用js-ctypes进行C ++ FFI。