カテゴリー別

お絵描き、デザイン

写真、動画関連ソフト

アメーバピグ専用ソフト

ホームページ関連

画像処理

スキャナー用

SEO 関連

お楽しみ

その他

過去ログ

2017年12月12日(火)

libzip 最新版のコンパイルに手間取るの巻

写真閲覧ソフトのミルノ PC フォトフレーム を修正中。

写真をミルノに!

で覚えてね。キラーン。

とりあえず、使用しているライブラリーを
最新のものにするため、ソースコードを
ダウンロード、コンパイルしました。

なんとか、完了しましたが、
libzip のコンパイルには、手間取りました。

コンパイル手順を書いときますね。

cmake のインストール

コンパイルには cmake が必要なので、
あらかじめインストールしておきます。

zlib のコンパイル

libzip は、zlib を使用するので、
まずは zlib をコンパイルします。

X:¥Original¥cpp¥zlib¥ フォルダーの下の、
zlib-1.2.11 に最新の src を展開します。

コマンドラインで、zlib-1.2.11 に移動し、

mkdir build
cd build
cmake .. -G"Visual Studio 14 2015" -DCMAKE_INSTALL_PREFIX="X:¥Original¥cpp¥zlib¥installed"

を順に実行します。

作成した build フォルダーの下に zlib.sln
ができるので、Visual Studio で開きます。

私の場合は、zlib、zlibstatic プロジェクトのプロパティで、
構成プロパティ > C/C++ > ラインタイムライブラリを
DLL なしのやつに変更します。

すわわち、
デバッグ版: マルチスレッド デバッグ DLL > マルチスレッド デバッグ
リリース版: マルチスレッド DLL > マルチスレッド
です。

あとは、デバッグ版、リリース版、
それぞれで「ソルーションのリビルド」した後、
INSTALL プロジェクトをのみをリビルドすると、
X:¥Original¥cpp¥zlib¥installed に lib とかがコピーされます。

なんとなく、わかると思いますが、
zlib.lib が DLL を使うバージョン
zlibstatic.lib が DLL を使わないバージョン
zlibd.lib、zlibstaticd.lib はそれぞれのデバッグ版です。

libzip のコンパイル

だいたい、zlib と同じです。

X:¥Original¥cpp¥libzip¥ フォルダーの下の、
libzip-1.3.2 に最新の src を展開します。

コマンドラインで、libzip-1.3.2 に移動し、

mkdir build
cd build
cmake .. -G"Visual Studio 14 2015" -DCMAKE_PREFIX_PATH="X:¥Original¥cpp¥zlib¥installed" -DCMAKE_INSTALL_PREFIX="X:¥Original¥cpp¥libzip¥installed"

を順に実行します。

作成した build フォルダーの下に libzip.sln
ができるので、Visual Studio で開きます。

私の場合は、libzip、libzipstatic プロジェクトのプロパティで、
構成プロパティ > C/C++ > ラインタイムライブラリを
DLL なしのやつに変更します。

すわわち、
デバッグ版: マルチスレッド デバッグ DLL > マルチスレッド デバッグ
リリース版: マルチスレッド DLL > マルチスレッド
です。

あとは、デバッグ版、リリース版、
それぞれで「ソルーションのリビルド」した後、
INSTALL プロジェクトをのみをリビルドすると、
X:¥Original¥cpp¥libzip¥installed に lib とかがコピーされます。

ただし、libzip とは違い、デバッグ版、リリース版で
ファイル名が同じ zip.lib なので、リンクしたい
方のプロジェクトの INSTALL のみリビルドしましょう。

てな、感じで OK だと思うのですが
コンパイルエラーが発生してうまく行きません。

コンパイルエラーは、zip_libzip_version.c で発生。
LIBZIP_VERSION が定義されてないエラーです。

ソースを検索してみると、VERSION がそれっぽいので
LIBZIP_VERSION を VERSION にするとコンパイルできました。

cmake のバージョンの差異か、
オプションの違いかなんかでしょうね。

ちなみに、作成された zip.lib は
DLL 無しバージョンみたいですが、
今度は、リンクに失敗しました。

_imp_zip_close がありません。みたいなエラーです。

ZIP_EXTERN マクロが怪しいので zip.h の定義を見ると、
ZIP_STATIC を定義すれば OK そうです。

私は、zip.h をインクルードする前に、必ず
#define ZIP_STATIC するようにしましたが、
リンクするプロジェクトのプロパティの
構成プロパティ > C/C++ > プリプロセッサ にある
プリプロセッサの定義に、ZIP_STATIC を追加してもよいでしょう。

日本語の最新版はこちらのページから、ダウンロードできます
You can download the latest version of Miruno PC Photoframe here.

ご意見・ご要望はこちらからどうぞ
You can contact me by this mail form.

・・・

ちなみに、libpng もだいたい libzip と
同様の方法でコンパイルできましたよ。

ミルノ PC フォトフレーム
ミルノ PC フォトフレームのダウンロード
ミルノ PC フォトフレームの更新履歴
ご意見・ご要望連絡窓口


コメント
コメントする