2010-01-15 1 views
1

Я пытаюсь запустить свое приложение на устройстве 2.2.1, несмотря на то, что он создан против SDK 3.1.2.Проблемы для iPhone OS 3.1.2 и 2.2.1

В таблице ниже приведены мои результаты

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 

Line # 3 доказывает, что ни один из моего кода не является несовместимым между SDk годов. Я вытащил все, что нужно было бы быть слабосвязанным, пытаясь понять суть проблемы.

Прерывание происходит быстро после запуска программы, но не сразу. И дело в том, что это код, который никогда не имел ничего общего с 3.0 функциями.

Линия, на которую он останавливается, - это простая математическая операция с участием 4 поплавков (ab)/(c/d), и там нет похоже, что-то не так с любым из них. (Это в C++)

Что еще может вызвать сигнал прерывания в этих условиях?

Update:

кажется, что точная точка это прерывание на бросает u64 к поплавку.

ответ

0

Что случилось, так это то, что когда вы запускаете это приложение в этой конфигурации, внезапно возникает проблема с присвоением u64 плавающей или двойной. Я предполагаю, что код каста u64 изменился? Так что это происходит только тогда, когда вы используете версию os, которая не соответствует sdk.

В любом случае обходным путем является преобразование u64 в unsigned int, а затем в float. Конечно, я могу только это сделать, потому что я в ситуации, когда число, о котором идет речь, всегда может вписаться в обычный int.