Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 2504|回复: 3

为什么Lazarus开发的软件这么大

[复制链接]

该用户从未签到

发表于 2012-10-24 09:50:45 | 显示全部楼层 |阅读模式
我们许多童鞋会问?为什么lazarus开发的程序即使strip后还那么大,没有vc的小呢?


1.首先是lazarus的程序自带了一些常用库,没有出现在OS的api中的,比如处理png,jpg等库。
2.然后是lazarus的程序都是静态编译的,不像vc ,vc根据版本需要 mfc*.dll ,msvcp*.dll 等库文件的支持,由于OS是m$开发的,所以这些库事先放在了OS里面,我们不觉得他大而已,实际上加起来,比lazarus开发的库更大,不信你在windows xp 上安装firebird 2.1,必须要msvcp80.dll,msvcr80.dll支持,这两个库就超过1MB.
3.第三个原因是lazarus的程序的底层库实现方式是这样,比如我们常常看到代码里有这个
  if FOnExit <> nil then FOnExit(Self) ;
  这个的意思是某个事件有用户自定义代码,就执行。
而在VC里面,是用宏,也就是在编译期,就根据需要处理的事件消息,生成上面这句代码,用pascal表示如
  #ifdef CM_EXIT
   FOnEXIT(self);
#endif
  所以lazarus编译的程序在这方面是要大一点点,但是基本可以忽略,那么这样做的好处是什么呢?
由于底层库自己封装了常用的message处理句柄,我们可以在程序里面动态挂接事件处理程序,比如
  button1.onclick := button1Click;


而要实现这样的功能,vc必须先给这个事件消息一个空的处理句柄,然后像上面一样的处理。
也就回到了lazarus的处理方式,是一模一样的。


总结lazarus开发的程序已经足够好,足够小了,如果还是不满足,可以使用KOL,模仿的就是VC的处理模式而已。

评分

参与人数 1威望 +7 收起 理由
bugxiong + 7 优秀文章,支持!n神马都是浮云!

查看全部评分

回复

使用道具 举报

该用户从未签到

发表于 2012-10-28 09:16:27 | 显示全部楼层
Delphi XE3编译的并不小。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-11-9 09:26:15 | 显示全部楼层
可以用strip、upx压缩
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-11-21 09:40:02 | 显示全部楼层

回 1楼(jixian) 的帖子

jixian:Delphi XE3编译的并不小。 (2012-10-28 09:16) 
那是你懂得太少!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 20:58 , Processed in 0.034422 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表