XPCOM DLL в Mozilla не регистрируется

Я создаю расширение 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».

Я что-нибудь пропускаю для регистрации класса? Как я могу отладить, что не так?


person divB    schedule 30.01.2014    source источник
comment
Дубликат этого вопроса? stackoverflow.com/questions/9054143/   -  person David-SkyMesh    schedule 01.02.2014
comment
Не дубликат. Тем временем я обнаружил, что интерфейс изменился, новый интерфейс дрянный и, похоже, почти никто больше не использует XPCOM, и мне порекомендовали использовать js-ctype. Вывод: js-ctype сработал из коробки :-)   -  person divB    schedule 01.02.2014
comment
Что, черт возьми, означает "паршивый" новый интерфейс? Вам либо нужен XPCom, либо нет. С XPCom можно сделать ряд вещей, которые нельзя сделать с ctypes.jsm.   -  person David-SkyMesh    schedule 01.02.2014
comment
Извините, неправильные слова. Выяснил, что интерфейс изменился. Кроме того, в списке рассылки мне сказали, что XPCOM отчасти устарел. Я должен использовать NPAPI или лучше js-ctypes для более простых задач.   -  person divB    schedule 03.02.2014
comment
Ну это неправильно. Во всяком случае, NPAPI по сути устарел. XPCom - наиболее часто используемый интерфейс FFI, и js-ctypes начинает получать все большее распространение. Но, как я уже сказал, есть много вещей, которые вы просто не можете реализовать (с точки зрения Mozilla) через интерфейс ctypes. Например, сейчас довольно много случаев, когда люди реализуют компоненты JavaScript XPCom, которые внутренне используют js-ctypes для C ++ FFI.   -  person David-SkyMesh    schedule 03.02.2014


Ответы (1)


Как указано выше:

js-ctype работал "из коробки". NPAPI по сути устарел. XPCom - наиболее часто используемый интерфейс FFI, и js-ctypes получает все большее распространение. Есть много вещей, которые вы просто не можете реализовать (с точки зрения Mozilla) через интерфейс ctypes. Например, сейчас довольно много случаев, когда люди реализуют компоненты JavaScript XPCom, которые внутренне используют js-ctypes для C ++ FFI.

person Community    schedule 02.12.2015