CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

アプリでzip圧縮と解凍をやりたくてzlibを組み込んでみたんだけど。。

投稿日:

でかいファイルは、圧縮してコンパクトに扱いたくなる。
テキスト形式で定義されているファイルをアプリで読み書きする。
テキストは圧縮すれば1/5くらいになるので、その結果小さくなった
ファイルをアプリの入出力とすればよいという発想だった。
アプリは、圧縮されたファイルを解凍してから入力して、
何らかの編集操作後には再度圧縮して出力することになる。
圧縮ファイルと言えばzipであり、zipを扱うならば商用利用も
可能なzlibということになった。
zlibの最新版は1.2.8(update2013/4/28)である。
zlibサイトを下にスクロールさせて、真ん中より少し下の
「Related External Links」の中の
「zlib for Windows 9x/NT/2000/XP/2003 (DLL version, plus related utilities) 」
をクリックでwinimage社のサイトに飛んで、zlib125.zipと
zlib125dll.zipをダウンロードして、アプリに組み込んだのだった。
winimage社は、zlibをWindowsで使う用にラッパーのDLLを作成&
公開してくれていて、その作成時期が少し前なのでzlibの最新の1.2.8
ではなく、1.2.5というバージョンになっていた。
(このラッパーはwinimage社のminizipから切り出したものらしい。)
その程度のバージョン違いは問題ないと考えたし、またアプリへの
組み込みも問題なくできたので、やれやれってことで終わっていた。
最近になって、zlibのバージョンが最新かどうかという話が出て、
あらためてwinimage社のサイトに行ってみたら、ダウンロードできる
ファイルがzlib123.zipとzlib123dll.zipになっていることが判明した。
1.2.5あるいは最新の1.2.8ベースが出ているかと思ったら、なぜか
バージョンが1.2.3に戻ってしまっていた。(2015/12/23現在)
不具合、脆弱性、ライセンスなどの問題で戻した可能性が高い。
そもそもの話として、zlib本体をアプリに組み込むべきだ。
しかし、ネットではwinimage社のラッパーを組み込むネタは転がって
いるものの、zlib本体を組み込む方法が見つからない。
容易に組み込めるwinimage社のラッパーに飛びつくのはよくわかる。
zlib本体は、hとdefとlibの構成になっているので、そんなに難しくない
ようには思えるが、いかんせん英語で前例がネットにないと来ている。
がんばって英語と格闘するか、ネットでの事例を探し出すか。。。
zlib最新版を使うための戦いは続く。

-ソフト開発
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

ソフト不正使用対策

ソフトウェア会社にとって、ソフトの不正使用は深刻な問題です。身近な問題として、現状と今後を考えてみたいと思います。  CADの業界では古くからこの問題に取り組んでいます。CADは比較的高価な価格で販売 …

no image

CArrayで配列の配列(ネスト)を実現する方法

CArrayで配列の配列(ネスト)を実現したいことがよくある。 シンプルにこんなことやると、ビルドエラーになる。 typedef struct { // 構造体 CStringArray m_ary; …

no image

zlibの研究結果

zip圧縮・解凍のフリーソフトであるzlibについていろいろと調べた結果。最新版の1.2.11を使ってzlibwapi.dllを作ることはできたが、それを実際に使ってみるとまともに動かなかった。圧縮は …

PDFium第2弾はPDFを画像化するWindowsフォームアプリケーションなり

「PDFium ViewerによるPDFレンダリングがイケてる」では、最低限のWindowsフォームアプリケーションを作ったわけだが、その第2弾は普通の人(非プログラマー)でも使えるPDFの画像変換ア …

no image

環境変数TEMPトラブルについて振り返る

プログラムから環境変数TEMPで指定されたフォルダにファイルが作れないことがわかった時点で、この問題は解決したも同じだった。TEMPの値を「%USERPROFILE%\AppData\Local\Te …