代码之家  ›  专栏  ›  技术社区  ›  Kevin Laity

iPhone OS 3.1.2和2.2.1的构建问题

  •  1
  • Kevin Laity  · 技术社区  · 16 年前

    我试图让我的应用程序在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投射到浮球上。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Kevin Laity    16 年前

    结果是,当你运行这个应用程序时,突然出现了一个问题,将u64转换为浮点或双精度。我猜u64的铸造代码已经改变了?因此,只有在运行与sdk不匹配的操作系统版本时,它才会失败。

    无论如何,解决方法是将u64转换为无符号整数,然后转换为浮点。当然,我只能这样做,因为我所处的情况是,所讨论的数字总是可以放入一个常规整数中。