aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/gre/index.html
blob: cf6028ae8895474f613ddff4a75f6cb04751390c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
---
title: GRE
slug: GRE
tags:
  - 'Gecko:Articles'
  - XULRunner
  - 'XULRunner:Articles'
translation_of: Archive/Mozilla/GRE
---
<p>嵌入式Mozilla技术的框架被称为GRE(Gecko运行时环境)。该嵌入式框架允许应用程序定位并嵌入一个兼容的gecko运行时,而不须要事先知道运行时安装的位置。这个文档描述了被嵌入方如何链接到一个GRE。要了解如何向GRE注册,请阅读<a href="cn/GRE_Registration">GRE注册</a></p><p>原来的"XRE"项目(意思是XUL运行时环境),已经被<a href="cn/XULRunner">XULRunner</a>项目取代。
</p>
<h3 id="Mozilla_Suite:_.E6.97.A7GRE"> Mozilla Suite: 旧GRE </h3>
<p>有两种不同的GRE:旧GRE是Mozilla应用程序套件的一部分。它随着Mozilla 1.4至1.7.x的Windows版安装程序安装。在Linux上还没有正式发布过带有GRE的Mozilla,但是各个Linux分发者例如Red Hat曾向Mozilla注册过他们的好像是GRE。Mozilla套件从来没有在mac平台上支持GRE。
</p>
<h3 id="XULRunner:_.E6.96.B0GRE"> XULRunner: 新GRE </h3>
<p><a href="cn/XULRunner">XULRunner</a>是GRE的新版本,它不仅允许嵌入,而且能够引导启动整个XUL应用程序,例如Firefox。XULRunner支持或将要支持所有三大主流平台(Windows,mac,和Linux)。
</p>
<h3 id=".E4.BB.8E.E5.BA.94.E7.94.A8.E7.A8.8B.E5.BA.8F.E4.BB.A3.E7.A0.81.E5.AF.BB.E6.89.BE.E5.92.8C.E4.BD.BF.E7.94.A8GRE"> 从应用程序代码寻找和使用GRE </h3>
<h4 id=".E9.81.BF.E5.85.8D.E7.9B.B4.E6.8E.A5.E9.93.BE.E6.8E.A5xpcom.dll"> 避免直接链接xpcom.dll </h4>
<p>如果一个应用程序希望使用GRE,必须确保链接到一个适当的库。如果直接链接xpcom.dll/libxpcom.so(xpcom.lib导入库),您的应用程序将不能启动,除非xpcom.dll在您的PATH路径中。这样的话就妨碍了在运行时动态地寻找兼容的GRE。
</p>
<h4 id=".E5.AF.BB.E6.89.BE.E5.85.BC.E5.AE.B9.E7.9A.84GRE"> 寻找兼容的GRE </h4>
<p>为了寻找兼容的GRE,您应当使用函数GRE_GetGREPathWithProperties(声明在 {{ Source("xpcom/glue/standalone/nsXPCOMGlue.h") }})。这将允许嵌入者指定适合的GRE版本,并指定GRE必须实现的特性(目前还没有特殊的特性被定义)。
</p>
<h4 id=".E9.9D.99.E6.80.81.E9.93.BE.E6.8E.A5xpcomglue.lib.EF.BC.88the_.22standalone_glue.22.EF.BC.89"> 静态链接xpcomglue.lib(the "standalone glue") </h4>
<p>解决静态链接xpcomglue.lib的方案,被称为"standalone glue" (see <a href="cn/XPCOM_Glue">XPCOM Glue</a>). 该库在嵌入代码和XPCOM间提供一个中间层。要使用XPCOM glue,您必须遵循以下步骤:
</p>
<ul><li> Compile your code with XPCOM_GLUE defined
</li><li> Link with xpcomglue.lib (<i>not</i> xpcomglue_s.lib!). Don't link against the NSPR libs.
</li><li> Find a compatible GRE (see above)
</li><li> Dynamically link to that GRE using the XPCOMGlueStartup() function. See "environment variables" below.
</li><li> Initialize XPCOM and do your work; when finished, shut down XPCOM.
</li><li> Unlink XPCOM with XPCOMGlueShutdown()
</li></ul>
<h4 id=".E4.BE.9D.E8.B5.96.E5.BA.93.E5.92.8C.E7.8E.AF.E5.A2.83.E5.8F.98.E9.87.8F"> 依赖库和环境变量 </h4>
<p>XULRunner GRE被设计成不需要嵌入者在调用XPCOMGlueStartup前设置任何环境变量,比如PATH或LD_LIBRARY_PATH,因为它将动态的定位正确的依赖库。不幸的是,基于Mozilla套件的GRE没有这样的便利,特别是在Linux上。嵌入者将需要设置LD_LIBRARY_PATH环境变量,并开始一个新进程才能正确地嵌入基于套件的GRE。
</p>{{ languages( { "en": "en/GRE", "ja": "ja/GRE" } ) }}