Firefox addon 如何使用xpidl(header.py,typelib.py)

Firefox addon 如何使用xpidl(header.py,typelib.py),firefox-addon,xul,xpcom,xulrunner,Firefox Addon,Xul,Xpcom,Xulrunner,我正在编写一个XPCOM组件。我有我的idl文件,它非常简单,只包含以下内容: #include "nsISupports.idl" [scriptable, uuid(4ead-ba5c-49c9-beb2=64209c7699a)] interface nsIPageSummary : nsISupports { boolean saveSummary(in nsIDOMDocument document, out unsigned

我正在编写一个XPCOM组件。我有我的idl文件,它非常简单,只包含以下内容:

#include "nsISupports.idl"

[scriptable, uuid(4ead-ba5c-49c9-beb2=64209c7699a)]
interface nsIPageSummary : nsISupports
{
    boolean saveSummary(in nsIDOMDocument document,
                        out unsigned long numLinks,
                        out unsigned long numImages);
};
我下载了xulrunner sdk,并试图通过以下命令从包含上述文件(nsIPageSummary.idl)的目录生成我的头文件:

~/xulrunnersdk/sdk/bin/header.py--cachedir=~/xulrunnersdk/idl/-o nsIPageSummary.h nsIPageSummary.idl

运行此命令时,我收到以下消息:

$ ~/xulrunner-sdk/sdk/bin/header.py --cachedir=~/xulrunner-sdk/idl -o nsIPageSummary.h nsIPageSummary.idl 
Traceback (most recent call last):
  File "~/xulrunner/xulrunner-sdk/sdk/bin/header.py", line 497, in <module>
    idl.resolve(options.incdirs, p)
  File "~/xulrunner/xulrunner-sdk/sdk/bin/xpidl.py", line 285, in resolve
    p.resolve(self)
  File "~/xulrunner-sdk/sdk/bin/xpidl.py", line 255, in resolve
    raise IDLError("File '%s' not found" % self.filename, self.location)
xpidl.IDLError: error: File 'nsISupports.idl' not found, nsIPageSummary.idl line 1:0
#include "nsISupports.idl"
$~/xulrunnersdk/sdk/bin/header.py--cachedir=~/xulrunnersdk/idl-o nsIPageSummary.h nsIPageSummary.idl
回溯(最近一次呼叫最后一次):
文件“~/xulrunner/xulrunner sdk/sdk/bin/header.py”,第497行,在
idl.resolve(options.incdirs,p)
文件“~/xulrunner/xulrunner sdk/sdk/bin/xpidl.py”,第285行,解析为
p、 决心(自我)
文件“~/xulrunner sdk/sdk/bin/xpidl.py”,第255行,解析
引发IDLSERROR(“未找到文件“%s”%self.filename,self.location)
xpidl.IDLError:错误:未找到文件“nsISupports.idl”,nsIPageSummary.idl行1:0
#包括“nsISupports.idl”

我已验证上述文件夹中是否存在这些文件。我正在使用MDN链接(https://developer.mozilla.org/en-US/docs/XPIDL/pyxpidl)作为指导,但没有多大帮助。如何使用这些工具?

您应该将
~/xulrunner sdk/idl/
定义为包含路径:

~/xulrunner-sdk/sdk/bin/header.py -I ~/xulrunner-sdk/idl/ ...
另一方面,缓存目录实际上应该是一些临时目录