頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


ZipArchiveでうまくビルドできなかった原因

iOSで使えるファイルを圧縮するライブラリを探していたら
ZipArchive ziparchive - An Objective C class for zip/unzip on iPhone and Mac OSX - Google Project Hosting
SSZipArchive soffes/ssziparchive · GitHub
あたりが出てくるんだ(派生したっぽいのも出てきてもう何がなんだかってなりそう)。

いろいろと使ってみたって記事があるので同じようにしてみたんだけど、どちらもうまくいかないんだ。
ZipArchiveでうまくいかないからSSZipArchiveでも試してみたんだけどね。

ビルド時のエラーメッセージ

NSObject.hやNSObjCRunTime.hにExpected identifier or '('とか
Apple LLVM compiler 4.2 Errorとか。
Xcodeはとにかくたくさんのエラーを吐き出してビルドしてくれない。エラーの部分を見ても何が悪いのかもわからないんだ。

必要だとされるライブラリを変えてみたり、ファイルの追加方法を変えてみたり。
検索して同じような不具合出てる人を探して解決方法を調べたりしたんだけど、どうやってもうまくいかない。
単純にライブラリーが古くてarmv7じゃだめとかそういうのかな、とか思ったけどそういうのだとたいてい検索したら出てくるはずなんだけど、さっぱり出てこないところをみると見当違いなんだろう、、、

苦し紛れに新たにプロジェクトを新規作成してテストしてみたら、、、すんなり動いたんだ!!!

最初にうまくいかなかったのはテスト専用のプロジェクト内でテストしてた時なんだ。それじゃあ違いは何よ?って不要なコードやら追加してるファイルやらを消していってようやくたどり着いた結果は、、、

-Prefix.pchファイル内で某ファイルをインポートしてからなんだ。
#import "Categories.h"
ここに汎用性のある自作カテゴリ(もちろんObjective-C)をインポートするよう記述してたんだよ。これを消せばうまく動いてくれる。
つまり、ここに記述した内容は各ファイルをコンパイルする時に付けられるわけだけど、CやC++のファイルにも付けていたってことか。
それじゃあってことで、元のテスト専用プロジェクトの-Prefix.pchファイル内での記述をこのようにif内に移動させてみたら意図通り動いてくれた。
#ifdef __OBJC__
    #import < UIKit/UIKit.h >
    #import < Foundation/Foundation.h >
    #import "Categories.h"
#endif

//#import "Categories.h"
元々 #ifdef __OBJC__ とかあったのはそういうためだったのね。
あまりにも間抜けすぎて検索してもこういうトラブルではまる人が見つからなかったのかな、、、?

結局これを修正すればZipArchiveもSSZipArchiveも動いてくれたよ。

<< UIScrollViewのサブビューを拡大した後におかしくなる   TopPage  クラスの説明図などもXcodeで管理する >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/794-c1be908a




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad