以前、ライブラリ系だと、libjpeg、zlib、libpng、と一緒に、Info-ZIPも試したことがあったが、今回改めて試すと、非常に大変なことがわかった。
今回は、zipへの圧縮を行う。

Info-ZIPのトップページに行って、
Zipのリンクを押すと、

Zipのトップ。
source codeを押すと、

みんなFROZENで落とせない。

結局sourceforgeに飛ばざるを得ない。
もう、わかってるとおもいますが、最初Linuxでやろうとおもいましたが、Info-ZIPはLinux版はzipやunzipのツールのみ提供で、DLLとかライブラリとして使えるビルドを持ってるのはWindows版だけみたいなんですよねえ、調べたけどLinuxはみつからず。
そして、そのあと実は、上の写真のZip 3.x(latest)でも試したんですが、windllのdllやexampleが、dswとかdsp形式のプロジェクトで、おそらくVisualC++6.0プロジェクトとかかなり古いんですよねえ。
実際ビルドすると失敗し、いろいろいじったけど断念。
現在だと、Unreleased Betasが妥当かなと。

Zip betasの、

zip31c.zipが、なんとか動かせそう。
ダウンロードしたら、zipを解凍して、

配置。
ライブラリ系はだいたいC直下。

windll。

vc8。

DLLのソリューションファイル。

3.0のdsw/dsp版(VC6?版)だとエラーが酷かったんですが、3.1cのこれだとサクッとビルドできた。

releaseも問題なく。

個人的な感想ですが、Info-ZIPのライブラリとしての情報って探しても全然無いので、example、これを見ないとわからない。

これもvc8を選ぶ。

これを起動。

これもビルドができた。

releaseも。

これはexampleの方だけど、実はwindllもexampleもDLL版だけじゃなくて、lib版もあってそれもビルドできそうだったのだが、結局ビルドエラーで断念した。

まあマルチバイトにしないといけないとかね。
まあ、ここはあんまり関係ないんだけど。

VC8用なのにこういうとこおかしい。VC6になってる。

これ元は追加の依存ファイルにlibがなかった。ので追加した。
releaseでもやったけど、

それでもダメだった。

DLLに戻る。
今回、releaseのDLLを使う。

新規のプロジェクトとして作成。

毎度の空プロコンソール。

とりあえずはcppで。

プロパティでマルチバイト文字セット。

releaseも。
[ツール]-[オプション]]
[ツール]-[オプション]。

インクルードにzip31cのパス。

DLLはライブラリのここに。

DLL用のヘッダもあるので、インクルードはここも追加。

DLLをEXEの横に。

releaseにも。

main.cppだからextern "C"とかいろいろやったけど治まらず。

今回は時間ないのでmain.cに変えた。

test.txtを準備。

こんな感じにしておく。

パス周りの処理でshlwapi追加。
やってることはたいしたことなくて、ユーザ関数とかはどうでもよくて、LoadLibraryして、ZpInitとかZpArchiveとかのポインタを取得して、ZpOptとかをセットして、ZpArchiveの関数ポインタ参照呼出しでtest.txtを圧縮してる。

エラーじゃなかったらOKなんだけど、ファイルがなかったりでもOKなのでちょっとねえ・・・。。

なんとかtest.zipができた。

開けるとtest.txtを復元できてる。
releaseでも同様にできた。
コードはまあそこまで大変じゃないけど、とにかく調べるのと環境作るのがねえ・・・。
ちなみにVS2017でもexampleで圧縮できたので、vc8以降はなんとか・・・。
Sample/info-zip/ZpArchive/ZpArchive/src/ZpArchive at master · bg1bgst333/Sample · GitHub
