zlibを使ったcompress(圧縮)とuncompress(解凍)について – プログラミング – Home

zlibを使ったcompress(圧縮...
 
通知
すべてクリア

[解決済] zlibを使ったcompress(圧縮)とuncompress(解凍)について


なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

お世話になります。
VS2013 Win32 コンソールアプリケーション 
スタティックライブラリでMFCを使用する
共通言語ランタイムサポートを使用しない
で開発中です。

やりたいことは、
zlibを使って、
①複数のファイルを圧縮してひとまとめする。(書庫は作らない?)
②ひとまとめしたものを解凍する。(書庫は作らないで解凍)
という言葉にすると非常に簡単な動作なのですが、どうにもzlibの関数compressと
uncomprssの使い方が分からず(引数の意味や、その内容が全く理解できません)、力を
貸していただきたく投稿させていただきます。
いろいろサイトを調べたのですが、ざっくばらんに書かれていて理解できず、UNIX環境の
ものばかりとかで手も足も出ない状態です。

こんな風に使うんだ。という手順を提示して戴けると助かります。
よろしくお願いします。

現在、zlibのサイトからソースを落としてきて(h.c)コンパイル→zlib.libを生成
zlib.libを開発しているプロジェクトに読み込み(スタティックリンク)、必要なヘッダ
zconf.h,zlib.h,zutil.hをソース元にコピーし、#include zlib.h
して、とりあえずcompress()などの関数を認識できるところまでしかできていません。

よろしくお願いします。


引用未解決
トピックタグ
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

試せる環境がありませんが……

https://oku.edu.mie-u.ac.jp/~okumura/compression/zlib.html
とか参考にはならないですか?

compress()/uncompress()で処理しようと思ったら…
>①複数のファイルを圧縮してひとまとめする。(書庫は作らない?)
>②ひとまとめしたものを解凍する。(書庫は作らないで解凍)
の「複数のファイル」をどういう扱いにするか?
という問題が発生するものと思われます。
tar形式のように繋げて一つのバイナリ列にする。とかの工夫が必要になるでしょう。

compress()/uncompress()は、与えられたバイナリ列を圧縮/展開するだけでファイルかど
うかは関与していないみたいですし。

先のページだと「使い方(高次関数)」のcomptest2.cに使用例がありますね。
1K単位で処理する。というサンプルですので渡すデータについてはページ内に説明があり
ます。

tar形式については
http://www.redout.net/data/tar.html
とかで解説されています。
どういう形式でバイナリ列にするか。については任意でしょうから、
ファイル名(100バイト)、データサイズ(4バイト)、データ本体(可変長)とかの単純なパ
ターンでもOKでしょう。

compress()なら第1引数で渡したアドレスから、第2引数で渡したサイズ分の領域に格納さ
れる…かと。
そこら辺のサンプル…となると、試せる環境がないとちょっと面倒ですかね。
# APIの使い方…って事ならスタティックリンクである必要はないのでzlibのDLL利用でも
いいんでしょうけども。


返信引用
なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

>瀬戸っぷさま

ご返答ありがとうございます。
compressで、1つのファイルを圧縮するテストプログラムは作れましたが…やはり複数の
ファイルをまとめるというのはデフォルトではできないのですね。
ファイルの名前とか覚えておかないといけないでしょうし。このような対処処理を自分で
ぱぱっとコーディングできればよいのでしょうけど…。

http://see-ku.com/sklib/08.skzipio/index.html
こちらのサイトさんが、(compress利用では無いようですが)複数ファイルを圧縮・解凍
するプログラムを公開しているのでソースを見ているところです。


返信引用
なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

解決はしていないのですが、違う方法を選んだのでこの質問はクローズします。
ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました