1

最近、Xcode 5 に更新したところ、次のコードで iOS アプリがクラッシュしました。

float some_var_a = sinf(...);
float some_var_b = cosf(...);

クラッシュログには次のように書かれています:

Dyld Error Message:
Symbol not found: ___sincosf_stret
Referenced from: /var/mobile/Applications/702C8CF3-BB96-41F0-9525-5D65B7A581F3/Magic        Encyclopedia: Illusions HD.app/Magic Encyclopedia: Illusions HD
Expected in: /usr/lib/libSystem.B.dylib
Dyld Version: 199.6

私が理解したように、問題はコンパイラによるsin/cos最適化にあります。___sincosf_stret 関数の 1 回の呼び出しで sin 値と cos 値の両方を計算しようとしますが、何らかの理由で libSystem.B.dylib にそのような関数がありません。

誰でも助けてください:

1) なぜそれが起こるのですか?

2) 解決方法は? 現在、sin と cos の両方を 1 か所で呼び出すことを避けているだけで、動作します。しかし、それは悪い解決策です。

4

1 に答える 1

7

このエラーは、コードが iOS 7 の展開ターゲットでコンパイルされ、iOS 7 より前のデバイスで実行された場合に発生します。

プロジェクトとすべての依存ライブラリ プロジェクトの設定を再確認して、展開ターゲットが正しく設定されていることを確認する必要があります (この場合は iOS 5.1)。

ライブラリ プロジェクトの設定が原因である可能性があります。これは、プロジェクトのデプロイ ターゲットがアプリ バンドルで強制されており、準拠していないデバイスでは実行できないためです。

于 2013-10-02T10:04:21.873 に答える