我正在開發Firefox擴展它調用XPCOM組件writen C++和我得到這個錯誤:當我嘗試執行從Java腳本的代碼NS_ERROR_XPC_GS_RETURNED_FAILURE錯誤代碼
[Exception... "Component returned failure code: 0x80570016
(NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016
(NS_ERROR_XPC_GS_RETURNED_FAILURE)" location: "JS frame ::
chrome://testtest/content/mytest.js :: loadTestPage :: line 128" data: no]
:
cid = '@myCompany.com/MyComponent;1';
obj = Components.classes[cid].getService(Components.interfaces.IMyComponent);
有人知道這個錯誤代碼的含義嗎?
在運行Vista 3.5(32位官方版本,即使在重新安裝FF並創建新配置文件後)運行Vista(包括x86和x64)的少數機器上,該錯誤僅在其工作的其他平臺上發生。使用Visual C++ 2008(sp1)編譯XPCOM組件。
我試圖刪除的compreg.dat和xpti.dat和它不工作,我也試圖建立新的配置文件,然後重新安裝擴展,但我仍然得到同樣的錯誤。
我知道一個事實,即Firefox的成功加載我的XPCOM組件和組件是工作,因爲我可以訪問和使用JavaScript編寫的另一個組件使用它。
從錯誤控制檯評估也有效。
表達:
Components.classes['@myCompany.com/MyComponent;1'].getService(
Components.interfaces.IMyComponent);
回報:
[xpconnect wrapped IMyComponent]
謝謝!
C++ XPCOM componten也從另一個JS組件調用和它的作品,但它的擴展不斷失敗。只有少數運行Vista OS和FF 3.5.2的機器纔會發生這種情況(即使重新安裝FF並使用新配置文件)。還我試圖評價:Components.classes ['@ myCompany.com/MyComponent;1'].getService(Components.interfaces.IMyComponent)表達從錯誤控制檯和它的工作原理(在錯誤控制檯消息是[xpconnect包裹IMyComponent]) 謝謝。 – 2009-09-03 14:07:25
它也可能發生遞歸服務負載。您可能會遞歸地在組件上調用getService。 – sdwilsh 2009-09-03 17:43:38