Firefox addon Mozilla中的XPCOM DLL未注册

Firefox addon Mozilla中的XPCOM DLL未注册,firefox-addon,xul,xpcom,Firefox Addon,Xul,Xpcom,我正在创建一个Firefox扩展,其中包含一个适用于Windows的XPCOM DLL。 此DLL已成功构建(我遵循了上的教程),DLL将导出NSGetModule。我想这应该没问题 我将IMyComponent.xpt和MyComponent.dll复制到扩展的components目录中 在chrome.rdf中,我添加了: interfaces components/IMyComponent.xpt binary-component components/MyComponent.dll 但

我正在创建一个Firefox扩展,其中包含一个适用于Windows的XPCOM DLL。 此DLL已成功构建(我遵循了上的教程),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]未定义”

我是否错过了注册课程的机会? 如何调试错误?

如上所述:

js ctype是现成的。NPAPI基本上已被弃用。XPCom是使用最多的FFI接口,js ctypes开始得到更多的采用。有许多事情是无法通过ctypes接口实现的(Mozilla方面)。例如,现在有很多案例在这里实现了JavaScript XPCOM组件,这些组件在内部使用C++的FSI类型。
这个问题的副本?不是重复-同时我发现接口发生了变化,新接口很糟糕,几乎没有人再使用XPCOM了,建议我使用js ctype。结论:js ctype开箱即用:-)“新界面糟糕”到底是什么意思?您要么需要XPCom,要么不需要。有许多事情你可以用XPCom来做,但是你不能用
ctypes.jsm
来做。对不起,用错了词。我发现界面变了。此外,在邮件列表中,我被告知XPCOM有点不受欢迎。对于更简单的任务,我应该使用NPAPI或更好的js ctypes。这是错误的。如果有什么不同的话,
NPAPI
基本上是不推荐的
XPCom
是最常用的FFI接口,
js ctypes
开始得到更多的采用。但是正如我所说的,有很多东西是不能通过ctypes接口实现的(Mozilla方面)。例如,现在有很多案例在这里实现了JavaScript XPCOM组件,它们内部使用了C++ FFI的JS Cype。