VC6.0を使っています。
圧縮、解凍を行うDLLはいくつか存在しますが、
Microsoftが提供するWin32APIのみ
を利用して、圧縮、解凍を行うことは可能でしょうか?
ぜひ方法を教えてください。
また、もし無理だということならば、圧縮、解凍を実装
するにあたり、役に立ちそうなアルゴリズム等の情報が
あれば教えてください。
よろしくお願いいたします。
> 圧縮、解凍を行うDLLはいくつか存在しますが、
> Microsoftが提供するWin32APIのみ
> を利用して、圧縮、解凍を行うことは可能でしょうか?
Win32API では不可能です。
解凍だけなら LZ32.DLL という DLL にいくつかの関数がありますが、これらの関数で解
凍できる形式はほとんど使われません。
また、Microsoftが提供するCabinet SDKというヤツでCAB形式の圧縮・解凍を行うアプリ
を作ることはできますが、Win32 APIとは違いますね。
> また、もし無理だということならば、圧縮、解凍を実装
> するにあたり、役に立ちそうなアルゴリズム等の情報が
> あれば教えてください。
圧縮・解凍を一から実装しようということですか?
たとえば、zlib なんていう既存のライブラリをスタティックリンクすれば、他に DLL
を必要とせずに圧縮・解凍を行うこともできるでしょうが、そうではなく、圧縮・解凍
ルーチンを自分で書くということ?
だったらこのへん
http://www.01-tec.com/
がいいかも。
「LZOpen」,「LZCopy」,「LZClose」等の関数がありますが、
「*.LZH」・「*.ZIP」・「*.CAB」とは違うものですね。
LHAだったら、LHA32のDLL
ZIPだったらシャノンさんのご意見どおり「zlib」を使うのがいいと思います。
> LHAだったら、LHA32のDLL
> ZIPだったらシャノンさんのご意見どおり「zlib」を使うのがいいと思います。
いやー、「外部 DLL を使わずに」という御注文ですからね。
LHA32.DLL が許容できるんでしたら ZIP32J.DLL をお勧めしますよ。
ちなみに、LHA32.DLL を使わずに LZH の圧縮、解凍ルーチンを実装しているアプリは、
LHa for Unix のソースコードを流用している場合が多いようです。
ZIP は Info-Zip というサイトでソースコードが手に入りますし、TAR32.DLL もソース
コードが公開されています。