___sincosf_stret在iOS 5.1上崩溃

use*_*695 1 xcode5

最近我更新到Xcode 5,现在我的iOS应用程序崩溃了以下代码:

float some_var_a = sinf(...);
float some_var_b = cosf(...);
Run Code Online (Sandbox Code Playgroud)

崩溃日志说明如下:

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
Run Code Online (Sandbox Code Playgroud)

据我所知,问题在于编译器进行的sin/cos优化.它试图在___sincosf_stret函数的一次调用中计算sin和cos值,但由于某种原因,libSystem.B.dylib中没有这样的函数.

有人可以帮忙:

1)为什么会发生?

2)如何解决?目前我只是避免在一个地方召唤罪恶和cos,它有效.但这是一个糟糕的解决方案.

tro*_*foe 7

使用iOS 7的部署目标编译代码时会导致此错误,然后在设备<iOS 7上运行.

您需要重新检查项目和所有从属库项目设置,以确保正确设置部署目标(在您的情况下为iOS 5.1).

库项目设置可能是一个罪魁祸首,因为项目部署目标在应用程序包中强制执行,并且无法在不兼容的设备上运行.