CB生成的程序需要哪些文件

以下以C++Builder5.0为例,其它版本大同小异,其中C++builder1.0的缺省设置就是可独立运行的.

1. 在bcb的IDE环境中,按Project菜单并转到Linker页下,在linking项中有一个Use dynamic RTL选项,不要选中它.这关系到编译生成的EXE是否需要以下二个文件: borlndmm.dll和 cc3250mt.dll.如果选中Use dynamic RTL,程序运行将在程序EXE所在目录和windows系统目录等目录下搜索此二文件并装入.如果没有选中它,将不需要此二文件.不同版本的c++builder,可能cc3250mt.dll名称不一样,如cb3.0的为 cp3240mt.dll.

2. 运行时包:按Project菜单并转到Packages页下,在runtime packages项中build with runtime packages选项,如果不选中它,bcb编译时将静态链接所有用到的库,其下的编辑框内容无作用.也就是说程序不需要运行时包.如果选中它,在选项下的编辑框中可以添加或删除运行时装入的包,如果程序用到一个包中的某组件,如果此包并未在编辑框包列表中,即使Build with runtime packages是选中的,程序运行时也并不需要此运行时包,再进一步,如果选中build with runtime packages但包列表编辑框是空的,其结果与不选中buider runtime packages是一样的.对于第三方组件(包括自己编译的组件)等,其设置也是一样的.

以上二项设置改变后重新build project即可.

如果我们并不需要生成独立运行的EXE,而是想具体知道我的程序分发后运行时需要哪些包(也许build with runtime packages选中了并且下面的编辑框列入了全部的运行时包),可以参考以下的说明:

组件运行时包其它需求

Data Access页下的TDatabase,TTable等通过bde访问数据库控件vclbde50.bpl它们基于bde连接数据库,需要计算机安装了bde,及相应SQL数据库的客户端程序(dbf等本地数据库无需)

ADO页下的TAdoCommand等基于ADO连接数据库的控件:vclado50.bpl需要计算机安装了ado,可以运行bcb安装盘中的mdac_typ.exe.此页控件cb5.0版本才有.

samples页下的TIBEventAlerter等控件vclsmp50.bpl

Data controls页的TDBEdit等控件vcldb50.bpl

Midas页的TClientDataset等控件vclmid50.bpl需要Midas.dll(低版本为dbclient.dll)

Standart/Dialogs页的TButton等控件vcl50.bpl

Interbase组件页的TIBQuery等组件vclib50.bpl  需要安装interbase client才能访问interbase server.

Quickreport组件vclx50.bpl&qrpt50.bpl

............

最好是使用 install shield express for C++builder来制作安装盘,只要设置程序中使用了哪些组件,isx即可自动将所需的bpl添加到安装工程中,省时省力并且不易出错.isx也提供了bde安装功能.

其实也有一个非常简单的方法可以试出程序具体需要哪些包:在一台未安装bcb的"空白"windows下拷贝bcb设计生成的需要运行时包的程序,并将所有的运行时包(windows目录下bcb的*.bpl以及第三方组件的bpl)拷贝到程序目录,然后运行程序,逐个删除bpl,不能删除的bpl就是程序运行时所需的.

3. 不管如何,如果程序用到了通过bde来连接数据库(DataAccess页)的控件,那么在运行时就需要在windows下安装bde.如果使用了第三方组件,还要注意这些组件是否需要别的dll和其它文件.

时间: 2024-10-27 15:55:22

CB生成的程序需要哪些文件的相关文章

jasperReport+iReport生成一个jasper文件后,用java程序调用该文件,报错误

问题描述 jasperReport+iReport生成一个jasper文件后,用java程序调用该文件,报错误 java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.callsite.CallSiteArray at java.lang.ClassLoader.findClass(ClassLoader.java:531) at java.lang.ClassLoader.loadClass(ClassLoader.java:

C# 程序自动批量生成 google maps 的KML文件

原文:C# 程序自动批量生成 google maps 的KML文件 google maps 的 KML 文件可以用于静态的地图标注,在某些应用中,我们手上往往有成百上千个地址,我们需要把这些地址和描述批量标注到 google maps 上去,如果手工来做,太耗时间,在这里我写了一个程序批量来生成这个 KML 文件. 首先看一下 KML 文件的格式: <?xml version="1.0" encoding="UTF-8"?> <kml xmlns=

myeclipse10.0安装会自动生成一个带空格的文件夹,汉化和使用会报错

问题描述 myeclipse10.0安装会自动生成一个带空格的文件夹,汉化和使用会报错 汉化要求安装路径不能带有空格,但是安装时会自动生成一个myeclipse 10的文件夹,无法汉化,该怎么办?图片说明 尝试过把空格去掉,但这样就无法启动程序会报错 解决方案 汉化版经常会出问题的,建议用英文版 解决方案二: 用英文的貌似也没啥区别吧,不一定要汉化的

C++与C#混合生成.NET程序

c++|程序 本文提供了一个方法,让C++源码和C#源码一起编译链接成一个单一的Assembly. 由于C++提供了IJW方法,允许将旧有C++代码也编译成托管代码,因此这篇小文可以用极小的工作量来彻底解决所有C++遗留代码移植到.NET的问题. 这个方法,再加上前次的小文<您也使用托管C++吗?>,就可以把C++遗留代码移植到.NET的所有方法一网打尽了. 好了,言归正传. 假设一个很简单的C++程序,它只有一个函数: //c.h#pragma onceint sqr(int n);  //

java中如何生成可执行的jar文件

java中如何生成可执行的jar文件 最简单的方法就是: jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$myAct ionListener.class CardLayoutDemo.class myClosingListener.class myPanel.class jar命令为java自带的专用打包工具: c代表生成新的jar包: e代表可执行的类,亦即main方法所在的类.如果该类有所属的包,书

inno setup 怎么可以不生成卸载程序

问题描述 inno setup 怎么可以不生成卸载程序 inno setup 怎么可以不生成卸载程序或者怎样在程序安装完之后删除某个文件求大神解答 解决方案 [Setup]Uninstallable=no添加这个就可以不生成卸载程序 解决方案二: 流氓软件?不让人卸载? 解决方案三: 不是 只需要一个卸载程序就行 其他安装到这个目录下的文件还会多生成一个卸载程序 只是让其他的不生成卸载软件

VS2008生成的程序无法在其它电脑上运行,提示系统无法执行指定的程序

经过一番查找,最给力的参考是 http://www.cnblogs.com/visoeclipse/archive/2010/02/27/1674866.html -----------------------以下为转载-------------------------------------------------------------- 首先感谢这位几仁兄的几篇博客: http://hi.baidu.com/fairysky/blog/item/130dda13db7b050a5aaf53

Visual Studio 不生成.vshost.exe和.pdb文件的方法

原文:Visual Studio 不生成.vshost.exe和.pdb文件的方法使用Visual Studio编译工程时,默认设置下,即使选择了「Release」时也会生成扩展名为「.vshost.exe」和「.pdb」的文件. 一.先解释一下各个文件的作用: .pdb文件: 程序数据库文件(Program Database File).默认设置下,Debug的PDB是full,保存着调试和项目状态信息.有断言.堆栈检查等代码,可以对程序的调试配置进行增量链接. 而Release的默认设置对P

想用C# wpf做一个多语言切换的程序,要求是可以拷贝语言文件到程序的某个文件夹下,点击程序的语言菜单就会显示出可以切换到这种语言。

问题描述 想用C#wpf做一个多语言切换的程序,要求是可以拷贝语言文件到程序的某个文件夹下,点击程序的语言菜单就会显示出可以切换到这种语言.语言文件是由自己生成的.比如拷贝阿拉伯语言文件,运行程序后,语言下拉菜单就显示多出一个阿拉伯,点击就可以动态切换到阿拉伯语,我想问现在用什么方法做这个好啊.求大虾们指点. 解决方案 解决方案二:参阅上述网页解决方案三:嗯,我先看看