Я создаю расширение Firefox, которое содержит DLL XPCOM для Windows. Эта DLL создана успешно (я следовал руководству по http://briankrausz.com/building-ac-xpcom-component-in-windows), а DLL экспортирует NSGetModule. Я полагаю, это должно быть нормально.
Я скопировал IMyComponent.xpt и MyComponent.dll в каталог компонентов расширения.
В 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] is undefined».
Я что-нибудь пропускаю для регистрации класса? Как я могу отладить, что не так?
ctypes.jsm
. - person David-SkyMesh   schedule 01.02.2014NPAPI
по сути устарел.XPCom
- наиболее часто используемый интерфейс FFI, иjs-ctypes
начинает получать все большее распространение. Но, как я уже сказал, есть много вещей, которые вы просто не можете реализовать (с точки зрения Mozilla) через интерфейс ctypes. Например, сейчас довольно много случаев, когда люди реализуют компоненты JavaScript XPCom, которые внутренне используют js-ctypes для C ++ FFI. - person David-SkyMesh   schedule 03.02.2014