最近、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 か所で呼び出すことを避けているだけで、動作します。しかし、それは悪い解決策です。