0

次のコードは、Xcode で作成されたテンプレート プロジェクトでクラッシュします。

int main(int argc, char *argv[]) 
{
    uint64_t t64 = 100000;
    double s = (double)t64; // Crash!
    ...

クラッシュには次のコンソール出力が伴い、2.2.1 デバイスで発生しますが、3.0.1 デバイスでは発生しません。Thumb または ARM のコンパイルの両方で発生します。

dyld: lazy symbol binding failed: Symbol not found: ___floatundidf
Referenced from: /var/mobile/Applications/15E9DC65-324D-4C3A-8477-DC8CFFA67DC1/MyApp.app/MyApp
Expected in: /usr/lib/libgcc_s.1.dylib

dyld: Symbol not found: ___floatundidf
Referenced from: /var/mobile/Applications/15E9DC65-324D-4C3A-8477-DC8CFFA67DC1/MyApp.app/MyApp
Expected in: /usr/lib/libgcc_s.1.dylib

この問題は Base SDK 3.0 でのみ発生し、2.2.1 用にコンパイルすることは問題ありません。残念ながら、私は 3.0 の拡張機能を持っています。

4

2 に答える 2

0

あれば動作します。変

   int main(int argc, char *argv[]) {
    uint64_t t64 = 100000;
    double s = (double)(uint64_t)t64; // Crash!
    ...
于 2009-10-07T23:10:48.860 に答える
0

ある iPhone プロジェクトでは機能するが、別のプロジェクトでは機能しないという場合、同じコードを異なる設定でコンパイルしていますか? もしそうなら、問題の根本にあるものを明らかにするために、2 つの設定の違いを確認します。

___floatundidfの一部である必要があるlibgccため、2.2.1 SDK のそのライブラリの ARM バージョンでは欠落している可能性がありますが、3.0.1 には存在します (したがって、前者ではクラッシュしますが、後者ではクラッシュしません)。このnmツールを使用して、両方でその存在を確認できます。2.2.1 から欠落している場合は、Apple にバグを報告する必要があります。

于 2009-08-21T20:34:15.580 に答える