0

どうにかして、iPhone 用にコンパイルするときに XCode プロジェクトの設定を台無しにしてしまいました。と言ってリンクすると失敗します

ld: warning: in /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/AddressBook.framework/AddressBook, file is not of required architecture
... (same for the other frameworks).

問題は、iPhone 用にコンパイルするときにシミュレータ フレームワークを使用しようとしていることです。

実際のリンク コマンドを見ると、次のようになります。

setenv IPHONEOS_DEPLOYMENT_TARGET 3.1
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk 
-L/Users/ben/development/xcode_output/Debug-iphoneos 
-F/Users/ben/development/xcode_output/Debug-iphoneos 
-F/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/
System/Library/Frameworks 
-F/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk/
System/Library/Frameworks 

シミュレータ フレームワークと iPhone フレームワーク パスの両方が提供されていることがわかります。どうすればそれを変更できますか? 設定のどこにも見つかりませんでした。

プロジェクト設定の[FRAMEWORK_SEARCH_PATHS, -F]は空です。

おそらく問題は、静的ライブラリでのリンクにあります。その静的ライブラリのプロジェクト設定には、多くの重複した設定が含まれています。常に 2 つの同一の設定があります (たとえば、2 つの Search Path ブロック、2 つの GCC-4.2 コード生成ブロックなど)。これは正常に見えません。

よろしく

4

5 に答える 5

0

ターゲットのフレームワーク検索パスを確認してください。そこに Simulator SDK への明示的なパスがある場合は、それを削除します。

于 2009-10-01T15:57:14.600 に答える
0

問題は、私がリンクした静的ライブラリに、iPhone とシミュレーターの 2 つのターゲットがあったことだと思います。ターゲットが1つだけになるように変更しましたが、これで問題は解決したようです。

よろしく

ベン

于 2009-10-07T17:56:47.283 に答える
0

ld: 警告: in /Developer/Platforms/ iPhoneSimulator.platform /Developer/SDKs/ iPhoneSimulator3.0.sdk /System/Library/Frameworks/AddressBook.framework/AddressBook, file is not of required architecture ... (他も同様)フレームワーク)。

デバイス用の建物ですよね?シミュレーターじゃない?同じフレームワークを見つけますが、デバイスの下にあります。インポートするときは、ファイル パス全体を確認してください。

于 2009-10-01T13:19:33.117 に答える
0

/Developer/platforms/.../Frameworks に移動して「古い方法」でプロジェクトにフレームワークを追加すると、ターゲット設定のフレームワーク パス検索リストにフル パスが追加されました。これは、私のすべてのフレームワークが突然壊れたことを意味しました。検索リストに完全なパスがないことを確認してください。新しいプロジェクトを作成しなくてもプロジェクトを修正できるはずです。

[編集] さらに調べてみると、この質問はcdespinozaによってすでに回答されていることがわかりました:)

于 2009-10-27T17:17:22.067 に答える
0

この問題を解決する唯一の方法は、新しいプロジェクトを作成して最初からやり直すことでした:-(

于 2009-10-01T13:15:13.313 に答える