Компонент Xpcom приводит к сбою Firefox

Я строю простой компонент XPCOM. но firefox вылетает каждый раз, когда я пытаюсь вызвать метод этого компонента xpcom.

иерархия файлов ниже:

HelloXpcom.xpi
---chrome.manifest
---install.rdf
---chrome
------content
---------sample.xul
---components
------HelloXpcom.dll
------nsISample.xpt

фрагмент chrome.manifest

content     sample    chrome/content/
interfaces components/nsISample.xpt
binary-component components/HelloXpcom.dll

overlay chrome://browser/content/browser.xul chrome://sample/content/sample.xul

мой интерфейс idl:

#include "nsISupports.idl"[scriptable, uuid(F7F48977-382E-461B-B04A-44567EE6D45A)]
interface nsISample : nsISupports
{
attribute string value;
void writeValue(in string aPrefix);
void poke(in string aValue);
};

используйте xpidl.exe для генерации npISample.h и npISample.xpt.
и все методы реализации почти ничего не делают, просто делают некоторые простые вещи.

sample.xul

<?xml version="1.0"?>
<overlay id="sample"xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<statusbar id="status-bar">
<script>
function DoXPCOM()
{
try {
alert("1");
var sample = Components.classes["@baofeng/sample;1"].createInstance();
alert("2");
sample = sample.QueryInterface(Components.interfaces.nsISample);
alert("3");
dump("sample = " + sample + "\n");
}
catch(err) {
alert(err);
return;
}

var res = sample.SetValue("123");
var str = "";
obj.GetValue(str);
alert(str);
}
</script>
<button label="xpcom" oncommand="DoXPCOM();"/>
</statusbar>
</overlay>

"alert("1");" выполняется, сбой при "Components.classes["@baofeng/sample;1"].createInstance();" контактный идентификатор "@baofeng/sample;1" распознается firefox, если нет, то должна быть какая-то информация "@baofeng/sample;1" неопределенное выскакивает. Таким образом, метод createInstance () — это главное.
кто-нибудь может мне помочь из этого?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]