关于生成exe文件的问题
用C++builder写的程序,编译后有几十K,但直接拷到别的机子上不能运行,说有DLL找不到,后来在工程选项里修改了几个选项后,可以直接在别的机子上运行了,但是文件好像是太大了一点,600多K,比用VC编的大多了.请问怎么可以编译成做好的大小呢(可以直接运行的)?另外,用C++builder带的install shell制作的安装程序,是不是自动做成最好的方式了呢(所带的DLL为最少的),还是要自己设置,怎么设置呢? 问题点数:50、回复次数:12Top
1 楼Phoenix2000(Phoenix2000)回复于 2000-10-21 17:09:00 得分 20
C++Builder 在编译应用程序时可选择带 RTL 运行时动态链接库和 BPL 包的方式。这样编译出来的程序虽然体积很小但要附带以上的多个 DLL 和 BPL 文件才能运行。如果不选择上述方式,则所有的运行期代码都连接到可执行文件中,虽然体积会增大一点,但不需要任何附加的 C++Builder 运行时 DLL 和 BPL 文件了。有一点要弄清楚的是,现在很多人都认为用 VC++ 编写的程序很小,其实 VC 编写的程序同样要附带很多的运行时动态连接库,比如 MFC42.DLL 等等(不止这一个文件)!只不过微软将这些文件随 Windows 一起安装罢了。这是占了天时地利,其实是不公平的。再有,不同的 VC 版本编写的程序有可能依赖不同版本的 MFC42.DLL 等等。你试过用 VC 编程序时选择以静态 MFC 库连接的方式了吗?那样编译出来的程序是独立的,不依赖什么 MFC42.DLL 之类的劳什子了,但它的体积是具有同等功能的采用 C++Builder 编译的应用程序的 4 到 6 倍大!!!我不是危言耸听,而是亲身经历过的!如果不使用类库,纯粹使用 Win32 SDK 的话,用 C++Builder 编写的程序还是要比用 VC 编写的程序要来的小,但速度不相上下。孰是孰非应该一目了然了吧。
用 C++Builder 编译的程序(EXE 和 DLL)可以用 UPX 这个压缩工具进行压缩处理,可将原来的程序文件体积压缩到原来的 35% 到 40%,并且完全可以正常使用。Top
2 楼Nicrosoft(奈软)回复于 2000-10-21 22:42:00 得分 10
Phoenix2000说的没错,我就喜欢bcb和delphi编译的完全独立的exe,再用aspack压缩一下,还是可以正常运行。Top
3 楼wxz(行舟)回复于 2000-10-22 01:34:00 得分 0
我最喜欢aspack,一般可压缩20-30%Top
4 楼rocknet(小川)回复于 2000-10-22 11:20:00 得分 0
但是。。怎样知道需要哪些dll呢,还是不必要知道。Top
5 楼Raptor(猛禽)回复于 2000-10-22 13:42:00 得分 10
如果链进去就不必知道了,你想知道的话可以用tdump看看Top
6 楼rocknet(小川)回复于 2000-11-03 15:41:00 得分 0
以前我和别人做过一个数据库的项目,我用VB,一个用VC,另外一个用DELPHI(恰好所用的开发工具都不一样),由于DLL的兼容问题,所以模块之间用EXE文件连接(没办法,我用VB写成的active dll在DELPHI老报错).我用VB生成的安装文件有29M,DELPHI那个有8M(包括BDE),VC那个只有2M多一点(可以直接运行的).
我想BC++和DELPHI可能差不多吧.
另外,我的机子怎么没有mfc42.dll???Top
7 楼easypaper()回复于 2000-11-03 20:22:00 得分 0
你可以使用BCB自带的安装程序,不过我比较喜欢用Install Shield Pro,因为可以控制的选项更多,而且,用InstallShieldPro,你自己可以了解你的工程实际需要那些动态库、文件,不需要那些。
我曾经用过4.0自带的ISE制作安装程序,带BDE的时候,必须选择全部安装,否则就会出错。后来自己用别的工具做安装程序,自己指定文件、写注册表,了解了很多东西,安装文件也小了好多。
另外,自带的ISE,好像没有中文语言包。用专业版就好多了。Top
8 楼easypaper()回复于 2000-11-03 20:23:00 得分 10
你可以使用BCB自带的安装程序,不过我比较喜欢用Install Shield Pro,因为可以控制的选项更多,而且,用InstallShieldPro,你自己可以了解你的工程实际需要那些动态库、文件,不需要那些。
我曾经用过4.0自带的ISE制作安装程序,带BDE的时候,必须选择全部安装,否则就会出错。后来自己用别的工具做安装程序,自己指定文件、写注册表,了解了很多东西,安装文件也小了好多。
另外,自带的ISE,好像没有中文语言包。用专业版就好多了。
另外,VC程序的Release版本,好像比BCB的程序要小很多。Top
9 楼Lionheart(狮心)回复于 2000-11-03 21:51:00 得分 0
一般BORLAND的不是DLL,而是BPL。找到所有的BPL,打包搞定。不过,只有可执行部分有十几二十几才上算。Top
10 楼Maxwell(不可知)回复于 2000-11-07 08:50:00 得分 0
VC的小一点是正常的,如果你不想用VCL用OWL那就和VC的大小差不多了,VC的MFC和VCL怎么能比.VC仗着Windows感觉要小一些.
Top
11 楼BigFoolCat(大笨猫)回复于 2001-01-25 05:51:00 得分 0
如果要程序小,一个办法就是直接使用 API
另外就是想VB那么使用系统现有的什么DLL和OCX资源,
说句实话我及其讨厌VB,程序到编起来很快,
兼容性极差,换个平台就……
我经常用Win2K、Win98什么的就发现平台问题实在……
不过我发现BCB编译的东西基本不出现兼容性问题。
还是想他们说的 BCB完全编译(去掉动态联接和BPL支持)
AsPack压缩
我的某豆奶公司的管理软件(Quick Report都有)才500K左右
真爽!!!
而且我建议编程平台用Win2k,真稳定!!!Top




