1

2 つの静的ライブラリに依存する iPhone アプリがあります

Project > Build For Runningを実行してからProject > Runを実行すると、エラーは発生せず、アプリは iPhone で期待どおりに実行されます。

Project > Build For Archivingを実行すると、ライブラリの 1 つでリンク エラーが発生しますが、他の ld: library not found for -lConcordeLib では発生しません。

作成された *.a ファイルのファイル システムを見ると、次のように表示されます。

Release-iphoneos/ConcordeLib.build/Objects-normal/armv6/libConcordeLib.a
Release-iphoneos/ConcordeLib.build/Objects-normal/armv7/libConcordeLib.a
Release-iphoneos/QSoptLib.build/Objects-normal/armv6/libQSoptLib. Release- iphoneos
/QSoptLib.build/Objects-normal/armv7/libQSoptLib.a
Release-iphoneos/libConcordeLib.a
Release-iphoneos/libQSoptLib.a

コンパイル用の DerivedData ディレクトリにあります。これは、 [Project] > [Build For Running ] を正常に実行したときに生成されたファイルとまったく同じように見えます。このファイルは、Debug-iphoneos の下に同じファイルを生成します。

派生データを消去し、XCode を停止して再起動しても、同じエラーが発生します。

4

1 に答える 1

2

ld コマンドを注意深く調べたところ、.../Build/Intermediates/NavConcorde.build/AdHoc-iphoneos/ の下にファイルが生成されていることがわかりました。AdHoc プロファイルは実際にはもう存在していなかったので、エラーが発生しても不思議ではありません。ただし、これがリンクエラーとして現れた理由はわかりません。Debug および Release の下のライブラリは、別のコンパイルからぶら下がっている必要があります。

[製品] > [スキームの編集]に移動し、既存の配布プロファイルを使用するようにプロファイルを設定すると、リンク エラーが解決されました。

于 2011-05-18T15:55:57.000 に答える