iPhoneシミュレータ:“ libpng.dylib、ファイルは必要なアーキテクチャではありません”
質問
libpngライブラリをiphoneアプリケーションにリンクしようとしていますが、このエラーが表示されます:
ld: warning: in /opt/local/lib/libpng.dylib, file is not of required architecture
これは、シミュレータまたはデバイス用にビルドするときに発生します。
ただし、コンソールアプリケーションをビルドする場合、libpngで問題なくリンクできます。
間違っているのは何ですか? iPhone開発に使用する必要がある別のlibpng.dylibはありますか?
解決
Chris Longが言うように、libpngはiphoneでは利用できません。プロジェクトにコンパイルできます(ARM用にコンパイルする場合)。 ここにリードがあります: http:// www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/
また、レコードに対して、 UIImagePNGRepresentation(UIImage * image)
他のヒント
dylibsはiPhoneでは使用できません。静的にコンパイルする必要があります。ただし、表示されているエラーは別の問題です。
Snow Leopardで開発していますか?その場合、ビルドしたデフォルトのライブラリはおそらく64ビットです。シミュレーターには32ビットのライブラリーが必要です。それに対してファイルを実行することで確認できます:
file /opt/local/lib/libpng.dylib
次のようなものが表示されない場合:
(for architecture i386): Mach-O dynamically linked shared library i386
その後、再利用することはできません。ライブラリを静的i386 libとして再構築すると、シミュレータで使用できるはずです。 autoconfベースのビルドである場合こちらのブログ投稿でビルドの方法とシェルスクリプトが説明されています使用できます。
これはインターネットからダウンロードしたlibpng.dylibですか? iPhone開発者は、動的ライブラリの外部を使用できません。
libpngが使用可能かどうかはわかりませんが、確認方法は次のとおりです。
- [ターゲット]リストでアプリ名をダブルクリックします。
- 「フレームワーク」リストの下にある「プラス」ボタンをクリックして、見つけようとします。小文字の名前が" Z"の後に表示されることを忘れないでください。
存在しない場合は使用できません。静的ライブラリを見つけて、ソースからコンパイルしてみてください。 iPhone Simulator(Intel)とiPhone(ARM)の両方のアーキテクチャ用に特別にコンパイルする必要があります。