阅读:3514回复:0
XPCOM插件开发
我用C++做了一个mozilla XPCOM的测试组件,一个动态库和一个XPT文件,我把它们放到Firefox安装目录下的components里,然后用下面的测试程序去测试它。测试程序如下:
<script language="JavaScript"> function doXPCOM() { try { const cid = "@starkravingfinkle.org/specialthing;1"; var obj = Components.classes[cid].createInstance(); obj = obj.QueryInterface(Components.interfaces.ISpecialThing); } catch (err) { alert(err); return; } var res = obj.add(3, 4); alert('3+4 = ' + res); var name = obj.name; alert('Name = ' + name); obj.name = 'New Name'; name = obj.name; alert('Name = ' + name); } //document.write "test"; doXPCOM(); </script> 结果一直报错,错误中有些乱码,好像是说组件没定义。 错误信息见附件error.jpg,但是我用XPCOMViewer查看 可以看到我的组件存在,而且属性和方法以及CID全都对的上, 我去网上搜索了半天,有人说删除xpti.dat和compreg.dat 就可以注册上了,我把这二个文件删了还是一样, 后来我用UE打开C:\Documents and Settings\Administrator\Application Data\Mozilla\Firefox\Profiles\xi438qjt.default目录下面的 xpi.dat和compreg.dat查看,发现xpti.dat中有一段是这样的: [Files,4] 0,browser.xpt,0,348547,1240533548000 1,comp.xpt,0,170,1245340364343 2,comp.xpt,2,167,1241795451000 3,comp.xpt,3,263,1241795452000, 请问一下为什么一个组件会被定义多次呢?这种情况怎么解决。 附件怎么上传不上来啊,我的文件只有几十K,二个JPG图都发不上来, 一上传就说文件大小限制! |
|