我试图让我的应用程序在2.2.1设备上运行,尽管是针对3.1.2 SDK构建的。
下表列出了我的结果
Deployment |Base |Device |Result
Target |SDK |Version |
-------------+------------+------------+-------
3.1.2 3.1.2 3.1.2 Runs OK
2.2.1 3.1.2 3.1.2 Runs OK
2.2.1 2.2.1 2.2.1 Runs OK
2.2.1 3.1.2 2.2.1 Builds OK, interrupt signal when run
第3行证明我的代码之间没有任何代码在sdk之间不兼容。为了找到问题的根源,我已经拿出了所有需要弱连接的东西。
程序开始后中断很快,但不是立即。它发生的重点是代码从未与3.0功能有任何关系
它停在的线是一个涉及4个浮点数(a-b)/(c / d)的简单数学运算,并且这些运算似乎没有任何问题。 (它是用C ++编写的)
在这种情况下还有什么可能导致中断信号?
更新
似乎它正在打断的确切点是将u64转换为浮动。
答案 0 :(得分:0)
最终发生的事情是,当你运行这个应用程序这个配置时,突然出现问题,将u64转换为float或double。我猜u64的播放代码已经改变了?因此,只有在运行与sdk不匹配的操作系统版本时才会失败。
无论如何,解决方法是将u64转换为unsigned int,然后转换为float。当然,我只能这样做,因为我所处的情况下,有问题的数字总是适合常规的。