17

xcode 4 final(利用可能な時間は3.latestと4 GMを使用していました)まで、これは起こりませんでした。xcode 4の最終バージョンにアップグレードすると、armv7バージョンを非armv7ライブラリにリンクしようとしたときにリンクエラーが発生し始めました(私のプロジェクトはデフォルトの標準armv6 armv7有効アーキテクチャに設定されています):

ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7: -- list of symbols --

armv6バージョンは正常にコンパイルされますが、全体的なコンパイルプロセスは77のリンクエラーで失敗します。

これは予想される動作であると理解しています。armv6libを使用してarmv7にリンクすることはありません。修正により、プロジェクトがarmv6のみに設定されます。ここでの私の質問は、これが以前のバージョンのxcodeで機能していた理由です。

armv6のみに設定すると、次の警告が表示され始めます。

Check dependencies

[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").

警告が表示されるのは好きではありません:-)同様の問題を抱えている人はいますか?

ありがとう、

フェルナンド

4

5 に答える 5

22

[プロジェクト]->[ビルド設定]->[アーキテクチャ]タブで、[アクティブなアーキテクチャのビルド]を[はい]に変更しました。

于 2011-04-01T12:28:53.700 に答える
7

iOS SDK 4.3では、リンカがarmv7バイナリでarmv6ライブラリを使用することを単に拒否するように見えます。これは以前はそうではありませんでした。

そのため、http: //code.google.com/p/ios-static-libraries/プロジェクトを更新して、ライブラリのarmv6バージョンとarmv7バージョンの両方を生成する必要がありました。

于 2011-03-28T00:55:08.057 に答える
3

いくつかのデモクラスを含むサードパーティフレームワークをプロジェクトに追加しましたが、実装に成功すると、それらのデモクラスを削除し、それ以降、エラーが発生し始めました 。エラー "ld:.........、ファイルはユニバーサルですが、アーキテクチャarmv6の(n)armv6スライスを含む "

一日中頭をかいた後、私は翌朝この解決策が仲間のiphone仲間に役立つかもしれないことを発見しました私は痛みを知っています

Targets-> "Your Project Target"-> Get Info-> Build Active Architecture only set to YES

それでおしまい..

于 2011-07-07T03:13:28.343 に答える
1

同じ問題がありました。しかし、その理由は私が思うに異なっていました。シミュレーター用に作成されたlibrary.aファイルを使用して、デバイス上で実行しようとしました。シミュレーターとデバイス用に異なる.aファイルが必要であることがわかりました。これが誰かに役立つことを願っています;)

于 2012-01-17T09:20:33.167 に答える
0

これがxcode4の最終バージョンでのみ発生し始めた理由はまだわかりませんが、数日前にgoogle codeプロジェクトで外部ライブラリ(sslとcrypto)がarmv6とarmv7の両方に対してコンパイルされていることがわかりました。

http://code.google.com/p/ios-static-libraries/

これにより、2つの異なるライブラリ検索パスを定義した場合の問題が修正されます。1つはarmv6用、もう1つはarmv7用です。

ありがとう、

于 2011-03-15T19:14:27.273 に答える