0

libpng ライブラリを iPhone アプリケーションにリンクしようとすると、次のエラーが発生します。

ld: warning: in /opt/local/lib/libpng.dylib, file is not of required architecture

これは、シミュレーターまたはデバイス用にビルドするときに発生します。

ただし、コンソール アプリケーションを作成すると、libpng に問題なくリンクできます。

私は何を間違っていますか?iphone 開発に使用する必要がある別の libpng.dylib はありますか?

4

3 に答える 3

3

iPhone では dylib を使用できません。静的にコンパイルする必要があります。そうは言っても、表示されているエラーは別の問題です。

Snow Leopard で開発していますか? その場合、構築したデフォルトのライブラリはおそらく 64 ビットです。シミュレータには 32 ビット ライブラリが必要です。それに対して file を実行することで確認できます:

file /opt/local/lib/libpng.dylib

次のようなものが表示されない場合:

(for architecture i386):    Mach-O dynamically linked shared library i386

それでは再利用できません。ライブラリを静的な i386 ライブラリとして再構築すると、シミュレータで使用できるようになります。autoconf ベースのビルドの場合は、このブログ投稿でビルドの方法が説明されており、使用できるシェル スクリプトが含まれています。

于 2009-11-27T05:15:58.003 に答える
1

Chris Long が言うように、libpng は iPhone では利用できません。プロジェクトにコンパイルできます(ARM用にコンパイルする場合)。そうしないと、うまくいきません。ここにリードがあります:http://www.cloudgoessocial.net/2009/06/09/imagemagick-on-iphone-with-jpeg-png/

また、記録として、UIImage を png としてネイティブに書き出すことができます。UIImagePNGRepresentation(UIImage *image)

于 2009-11-27T02:30:54.827 に答える
1

これは、インターネットからダウンロードした libpng.dylib ですか? iPhone 開発者は、外部の動的ライブラリを使用することを許可されていません。

libpngが利用できるかどうかはわかりませんが、確認方法は次のとおりです。

  1. [ターゲット] リストでアプリ名をダブルクリックします。
  2. フレームワークリストの下にあるプラスボタンをクリックして、見つけてみてください。"Z" の後に小文字の名前が表示されることを忘れないでください。

そこにない場合は使用できません。静的ライブラリを見つけて、ソースからコンパイルしてみてください。iPhone Simulator (Intel) と iPhone (ARM) の両方のアーキテクチャ用に特別にコンパイルする必要があります。

于 2009-11-27T02:19:28.627 に答える