Странные динамические ссылки на iPhone - PullRequest
0 голосов
/ 21 августа 2009

Сбой следующего кода в проекте шаблона, созданном XCode.

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

Сбой сопровождается следующим выводом консоли и происходит на устройстве 2.2.1, но не на устройствах 3.0.1. Это происходит как компиляция для большого пальца или 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.

Ответы [ 2 ]

0 голосов
/ 08 октября 2009

Это работает, если вы делаете. Weird

   int main(int argc, char *argv[]) {
    uint64_t t64 = 100000;
    double s = (double)(uint64_t)t64; // Crash!
    ...
0 голосов
/ 22 августа 2009

Когда вы говорите, что он работает на одном проекте iPhone, а не на другом, вы компилируете один и тот же код с разными настройками? Если так, я бы проверил, какие настройки отличаются между ними, чтобы пролить свет на то, что может быть причиной проблемы.

___floatundidf должен быть частью libgcc, поэтому он может отсутствовать в ARM-версии этого библиотеки для 2.2.1 SDK, но присутствует в 3.0.1 (следовательно, сбой в первом, но не во втором). Вы можете использовать инструмент nm, чтобы проверить его наличие в обоих. Если он отсутствует в 2.2.1, вы должны сообщить об ошибке в Apple.

...