AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > C++

C++ Builder 运行时包

51自学网 http://www.51zixue.net
第10章 使用包和组件
包是C++Builder应用程序、IDE或二者同时使用的一个特殊的动态链接库。运行时包提供用户运行应用程序时的功能。设计时包用于在IDE中安装组件,并为定制组件创建特殊的属性编辑器。单个的包在设计时和运行时都能工作,并且设计时包经常通过调用运行时包来工作。包存储在扩展名为.BPL(Borland包库)的文件中以便与其他的DLL(动态链接库)区分开来。

与其他的运行时库一样,包中包含能在各应用程序间共享的代码。例如,最经常使用的C++Builder组件存放在称为VCL50的包中。每次创建应用程序时,都可指定它使用VCL50。当编译这样的应用程序时,应用程序的可执行文件仅包含它特有的代码和数据;公用代码存放在VCL50.BPL中。安装了几个可用包应用程序的一台计算机仅需要VCL50.BPL的一个拷贝,它被所有的应用程序和IDE自身共享。C++Builder捆绑了一些预编译的运行时包,包括VCL50,它封装VCL组件。C++Builder也使用设计时包处理IDE中的组件。

你可以创建有或没有包的应用程序。然而,如果想要把定制组件增加到IDE中,必须把它们作为设计时包安装。可以创建自己的运行时包以便在应用程序间共享。如果你编写C++Builder组件,可以在安装前将组件编译为设计时包。

10.1 为什么使用包
设计时包简化了发布并安装定制组件的任务。运行时包是可选的,它对常规的编程提供了一些好处。通过把可重用代码编译进一个运行时库,就可在应用程序中共享它。例如,所有应用程序—包括C++Builder本身—都能通过包访问标准的组件。因为应用程序没有把组件库的拷贝放进可执行文件中,可执行文件会减小很多,这节省了系统资源和硬盘空间。而且,因为仅有应用程序特有的代码被编译,所以包可以允许快速的编译。

包和标准的DLL
当定制在IDE中使用的组件时需要创建包。当要创建造一个可被任何Windows应用程序调用的库时,创建一个标准的DLL,而不用考虑创建应用程序使用的开发工具。注意包与应用程序中的其他模块共享其全局数据。

10.2 运行时包
运行时包与C++Builder应用程序一起发布。当用户运行应用程序时提供功能。
为运行使用包的一个应用程序,计算机必须有应用程序的.EXE文件和所有应用程序使用的包(.BPL文件)。BPL文件必须在应用程序可使用它们的系统路径上。当发布一个应用程序时,必须确保用户拥有任何需要的正确版本的.BPL。

10.2.1在应用程序中使用运行时包
要在应用程序使用包:
1) 在IDE中装载或创建一个工程。
2) 选择Project|Options。
3) 选择Packages标签页。
4) 选择“BuildwithRuntimePackages”复选框,并在下面的编辑框中输入一个或多个包名(与已安装的设计时包相关的运行时包已在编辑框中列出)。要把一个包加到已存在的表中,需点击Add按钮,并在AddRuntimePackage对话框中输入新的包名。要浏览列表中可用的包,先点击Add按钮,然后在AddRuntimePackage对话框中点击靠着PackageName编辑框的Browse按钮。如果在AddRuntimePackage对话框的SearchPath编辑框中编辑,会改变C++Builder的全局库路径。包文件不需要包括扩展名。若直接在RuntimePackages编辑框中输入,确保用分号分开多个名字。例如:VCL50;VCLDB50;VCLDBX50。RuntimePackage编辑框中列出的包在编译时自动地链接到应用程序中。重复的包名被忽略,并且若编辑框为空,应用程序按不带有包编译。运行时包只能被当前工程选择。要把当前选择自动作为新工程的缺省值,选择对话框底部的“缺省”复选框。

带有包的应用程序还必须包括它使用的包的头文件。例如,使用数据库控件的应用程序需要#include“vcldb.h”语句,就算它使用了VCLDB40包也需如此。在生成的源文件中,C++Builder自动创建这些#include语句。

10.2.2 动态装载包
在运行时装载一个包,需调用LoadPackage函数。例如,当一个文件在文件选择对话框中被选择时,下列代码被执行。


要动态卸掉一个包,调用UnloadPackage。注意要销毁包中定义的类的所有实例并且删除它所做的注册。

10.2.3 决定使用哪个运行时包
C++Builder捆绑了一些预编译的运行时包,包括VCL50,它提供基本的语言和组件支持。VCL50包中包含了最常用的组件、系统函数及Windows界面元素。它不包括数据库或Windows3.1组件,那些存在于其他包中。

参见联机帮助的“运行时包,预编译”可获得一个C++Builder捆绑的其他运行时包的列表。为了创建一个使用包的客户/服务器数据库应用程序,至少需要两个运行时包:VCL50和VCLDB50。如果想在应用程序中使用Outline组件,那么还需要VCLX50。要使用这些包,选择Project|Options,选择Packages标签页,并且在RuntimePackages编辑框中做如下输入:VCL50;VCLDB50;VCLX50实际上,不是必须包括VCL50,因为VCL50在VCLDB50的要求列表(Requireslist)中被引用(参见10.4.4 节的“要求列表”部分)。无论VCL50是否包括在RuntimePackages编辑框中,应用程序的编译都一样。

10.2.4定制包
定制的包可以是任何一个自己编写代码并编译的BPL,或是第三方供应商的一个预编译的包。要在应用程序使用定制的运行时包,选择Project|Options并把包名加到Packages页的RuntimePackages编辑框中。例如,假定有一个统计包STATS.BPL。要在应用程序使用它,可在RuntimePackages编辑框中按下列方式输入:VCL50;VCLDB50;STATS若创建自己的包,可根据需要将它们加入列表。

 

 

 
上一篇:C++ Builder 创建和编辑包  下一篇:C++和Object Pascal对象模型