目次
はじめに
C++
でzip
アーカイブの展開を行うためにlibzip
を導入する
wxWidgets
でなぜかエントリの名前が空文字になってしまうアーカイブが存在したため。
解決しました: wxWidgets wxZipInputStreamでエンコーディングの自動判別ができる - ikap
libzip
では取得できた。
Xcodeで使いたい
libzipの導入
homebrew
で行った。
brew install libzip
これでOK
Xcodeへの導入
Xcode
のプロジェクト設定を開き、Build Settings
に項目を追加する。
- Other Linker Flagsに1つ追加
- -lzip
- Other C++ Flagsに2つ追加
- -I/usr/local/Cellar/libzip/1.1.2/include
- -I/usr/local/Cellar/libzip/1.1.2/lib/libzip/include
パスは適宜置き換えてください。探すときは、linker
やc++ fl
などで検索すれば良いと思います。
これでインクルードもビルドもできました。
NiH: libzip: libzip(3)がドキュメントみたいです。
コード例
#include <iostream>
#include <zip.h>
using namespace std;
string zipfile = "some_zipfile_path";
int err = 0;
zip *z = zip_open(zipfile.c_str(), 0, &err);
cout << "err?: " << err << endl;
int num = zip_get_num_files(z);
cout << "num: " << num << endl;
for (int i = 0; i < num; i++) {
struct zip_stat zs;
zip_stat_index(z, i, 0, &zs);
cout << "entry i: " << i << ", name: " << zs.name << endl;
}
コメント