Проблемы с использованием библиотеки в Xcode - PullRequest
0 голосов
/ 02 июня 2010

Я на самом деле разрабатываю приложение для iPhone, и мне нужно использовать библиотеку, изначально предназначенную для среды Linux. Поскольку я использую Mac (со Snow Leopard и Intel Core Duo), я думаю, что возможно использовать эту библиотеку в моем приложении.

В моей библиотеке 3 файла: файл .h, файл .a и файл .so (и .a, и .so находятся в / Developer / usr / lib). Кроме того, я включил .h в мой код и добавил, что .a в XCode имеет каркас (и он работает, потому что XCode находит компиляцию .so).

Для вашей информации, когда я использую команду "file" для файла .so, у меня есть: ELF 32-битный разделяемый LSB-объект, Intel 80386, версия 1 (SYSV), динамически связан, не разделен

Когда я компилирую для Xcode Simulator, у меня появляется предупреждение и ошибка.
Предупреждение:

В /Developer/usr/lib/mylib.so файл был создан для неподдерживаемых формат файла, который не связан с архитектурой (i386)

Ошибка: "_mylib_fct", по ссылке:


- [MyAppAppDelegate applicationDidBecomeActive:] в MyAppAppDelegate.o
Символ (-ы) не найдены
Собрать2: ld вернул 1 статус выхода

Когда я компилирую для Device 3.0 с архитектурой arm6, у меня тоже появляется та же ошибка, но предупреждение совсем другое:
ln /Users/Pablo/MyApp/mylib.a файл не имеет необходимой архитектуры

Я пытаюсь решить эту проблему и заставить приложение работать с этой библиотекой уже несколько дней, и я не понимаю, почему компилятор жалуется ... Это проблемы с 32/64 битами? Как я могу справиться с этим?

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

Mac OS X не двоично совместим с Linux. Он не может загружать изображения в формате ELF и не использует один и тот же ABI. Он может загружать только изображения MACH, например:

file /usr/lib/libcrypto.dylib 
[..]
/usr/lib/libcrypto.dylib (for architecture i386):   Mach-O dynamically linked shared library i386

Подробнее см. Справочную страницу dlopen .

1 голос
/ 02 июня 2010

AFAIK Если Mac OS не двоично совместима с конкретной версией Linux, библиотека не должна использоваться в ваших проектах.

Также вам нужны две версии, одна для симулятора (i386) и одна для устройства (arm ..).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...