DYLD_INSERT_LIBRARIES и iPhone - PullRequest
       8

DYLD_INSERT_LIBRARIES и iPhone

4 голосов
/ 27 октября 2011

Я понимаю, что Apple не поддерживает использование динамических библиотек в приложениях для iPhone.Но мы работаем над собственным приложением, и у нас есть уникальное требование использовать динамические библиотеки.Наше требование - загрузить динамическую библиотеку при запуске приложения «iPhone».Я прочитал, что DYLD_INSERT_LIBRARIES предназначен для этой цели.Поэтому я отредактировал Info.plist и добавил ниже запись.LSEnvironment DYLD_INSERT_LIBRARIES @ executetable_path / sample.dylib

Но, похоже, это не работает.Пожалуйста, дайте мне знать ваши мысли?Очень ценю вашу помощь в этом отношении.

Спасибо --Neo

Ответы [ 4 ]

4 голосов
/ 06 августа 2014

Я нашел способ успешно добавить команду LC_LOAD_DYLIB load в двоичный файл MachO, используя optool.

$ optool install -c load -p "@executable_path/<dylib_path>" -t <executable>
$ otool -L <executable>

При сборке optool убедитесь, что настройка OTHER_LDFLAGS включает -ObjC.

optool не может успешно добавлять команды загрузки для arm64 архитектур, поэтому вы можете удалить arm64 из двоичного файла

$ lipo <input_file> -remove arm64 -output <output_file>

Edit:
Существует открытый запрос pull с поддержкой arm64.

0 голосов
/ 27 мая 2013

Я также работаю над теми же проблемами в последние несколько дней.Мне также не удалось сделать это так, как вы пытаетесь.Поэтому я пытаюсь запустить свое приложение из другого приложения по этой ссылке: Внедрение динамической библиотеки , к сожалению, Apple Block выполняет несколько задач (даже на симуляторах iphone), но вы можете попробовать, возможно, вам повезет больше.Я знаю, что это не тот ответ, который вы ожидаете, но, возможно, это даст вам возможность подумать.Пожалуйста, поделитесь, если у вас есть прогресс.

0 голосов
/ 27 мая 2013

Вы «можете» загрузить двоичный файл во время выполнения, и вы можете манипулировать настройками xcode, чтобы он скомпилировал dylibs для iOS.Смотрите этот ответ:

https://stackoverflow.com/a/10509453/784387

0 голосов
/ 27 октября 2011

Рад, что исправлен, но dylibs не поддерживаются и не будут работать.Вам нужно получить код для библиотек и скомпилировать их в статическую библиотеку для архитектуры arm6 / 7.Тогда вы можете легко включить эти библиотеки.Существует множество примеров статических библиотек, и XCode также предоставляет цели для их построения.

...