根据http://zlib.net/消息,目前的版本是1.2.8 可下载为x32和x64 objs。
目前我在机器上有古代版的Delphi。 我正在尝试用它做一些事情并编译我的旧项目。
我正处于恢复/安装回/所有以前使用过的组件的阶段, 重新检查演示和示例以刷新内存或技能(几年没有IDE)。
在安装不同组件的过程中,我收到IDE警告 像这样:
无法加载包'dcliteXX'它包含单位'zlib',这也是 包含在DelphiXV0包中。你想尝试吗? 在下次加载项目时加载此包?
然后我在整个/ AddComponents目录中进行文件搜索并找到:
obj's:deflate,inflate,inftrees,adler32,infblock,infcodes,infutil,inffast 还有/ OBJ目录文件:uncompress,compress,crc32,gzio,zutil
仅限DelphiX / DirectX zlib.dcu 1.1.3
hicomponents zlib.dcu 1.1.3
codebot,两个pas文件链接objs:
BareZLib使用/ zlib中的1.0.4,
{$L ZLIB\DEFLATE.OBJ}
{$L ZLIB\INFLATE.OBJ}
{$L ZLIB\INFTREES.OBJ}
{$L ZLIB\TREES.OBJ}
{$L ZLIB\ADLER32.OBJ}
{$L ZLIB\INFBLOCK.OBJ}
{$L ZLIB\INFCODES.OBJ}
{$L ZLIB\INFUTIL.OBJ}
{$L ZLIB\INFFAST.OBJ}
和BarePNG / pngzlib使用来自/ imgzlib的1.1.4
同一套objs但不同的版本。
同一组objs + zlib C源。
TinyDB ZlibUnit.dcu - 1.1.3,+ zlib源的pascal版本
JEDI ver 1.104 JCL zlibh.dcu 1.2.3
VGVCL单位vgZLib使用zlib,目前为1.1.3
IDE /lib/zlib.dcu为1.0.4:D
相当混乱
来自zlib.net的zlib包有win32 objs:
收缩,膨胀,inftrees,树,adler32,
infback,infast和... compress,crc32。
和ZlibEx.pas,ZlibExAPI.pas,ZlibExGZ.pas
我在第一时间想到:我可以将新的* .obj复制到组件的/ implobj目录中 并重建包以刷新其* .bpl,* .dcp包
但是 - 我对丢失
感到困惑 {$L ZLIB\INFBLOCK.OBJ}
{$L ZLIB\INFCODES.OBJ}
{$L ZLIB\INFUTIL.OBJ}
在当前的zlib_archive中。
第二个想法,如果我操纵我的{Delphi} / lib路径并使用最新的zlib 高位的组件路径所有已编译的项目和重建包都获得新的zlib.dcu。 /测试需要他们将工作/
第三个想法 - 也许我将所有组件单元声明从Zlib更改为ZlibEx 所有新编译的二进制文件都获得当前的zlib实现/二进制文件。
并且有人怀疑结束 - 为什么不可能将链接的obj统一到zlib / pngzlib单元? 如果是,那么如何确保png组件适用于新的Zlib版本?
答案 0 :(得分:0)
我认为没有任何新的zlib .obj文件的原因。如果我是你,我会坚持使用组件附带的.obj文件。试图将新的.obj文件放入其中只是在寻找麻烦。您可能必须修改许多组件才能使它们正常工作。为了获得什么收益?
如果您使用的是现代Delphi和最新的组件,那么,如果组件实现得很好,组件将使用Delphi RTL中提供的zlib单元。您可以修改组件以使用单个共享zlib单元。但又一次,获得了什么收益?现在你将使用组件的修改版本,这可能使未来的Delphi升级变得更加复杂。
在我看来,您的主要问题是您有多个设计时包,其中包含一个名为zlib的单元。这就是我要做的事情: