嵌入式Mozilla技术的框架被称为GRE(Gecko运行时环境)。该嵌入式框架允许应用程序定位并嵌入一个兼容的gecko运行时,而不须要事先知道运行时安装的位置。这个文档描述了被嵌入方如何链接到一个GRE。要了解如何向GRE注册,请阅读GRE注册。
原来的"XRE"项目(意思是XUL运行时环境),已经被XULRunner项目取代。
Mozilla Suite: 旧GRE
有两种不同的GRE:旧GRE是Mozilla应用程序套件的一部分。它随着Mozilla 1.4至1.7.x的Windows版安装程序安装。在Linux上还没有正式发布过带有GRE的Mozilla,但是各个Linux分发者例如Red Hat曾向Mozilla注册过他们的好像是GRE。Mozilla套件从来没有在mac平台上支持GRE。
XULRunner: 新GRE
XULRunner是GRE的新版本,它不仅允许嵌入,而且能够引导启动整个XUL应用程序,例如Firefox。XULRunner支持或将要支持所有三大主流平台(Windows,mac,和Linux)。
从应用程序代码寻找和使用GRE
避免直接链接xpcom.dll
如果一个应用程序希望使用GRE,必须确保链接到一个适当的库。如果直接链接xpcom.dll/libxpcom.so(xpcom.lib导入库),您的应用程序将不能启动,除非xpcom.dll在您的PATH路径中。这样的话就妨碍了在运行时动态地寻找兼容的GRE。
寻找兼容的GRE
为了寻找兼容的GRE,您应当使用函数GRE_GetGREPathWithProperties(声明在 xpcom/glue/standalone/nsXPCOMGlue.h
)。这将允许嵌入者指定适合的GRE版本,并指定GRE必须实现的特性(目前还没有特殊的特性被定义)。
静态链接xpcomglue.lib(the "standalone glue")
解决静态链接xpcomglue.lib的方案,被称为"standalone glue" (see XPCOM Glue). 该库在嵌入代码和XPCOM间提供一个中间层。要使用XPCOM glue,您必须遵循以下步骤:
- Compile your code with XPCOM_GLUE defined
- Link with xpcomglue.lib (not xpcomglue_s.lib!). Don't link against the NSPR libs.
- Find a compatible GRE (see above)
- Dynamically link to that GRE using the XPCOMGlueStartup() function. See "environment variables" below.
- Initialize XPCOM and do your work; when finished, shut down XPCOM.
- Unlink XPCOM with XPCOMGlueShutdown()
依赖库和环境变量
XULRunner GRE被设计成不需要嵌入者在调用XPCOMGlueStartup前设置任何环境变量,比如PATH或LD_LIBRARY_PATH,因为它将动态的定位正确的依赖库。不幸的是,基于Mozilla套件的GRE没有这样的便利,特别是在Linux上。嵌入者将需要设置LD_LIBRARY_PATH环境变量,并开始一个新进程才能正确地嵌入基于套件的GRE。