2013-07-24 9 views
1

Я работаю с толстой статической библиотекой, которая использует dlopen() для загрузки файлов interal modules (.so) внутри статической библиотеки. В stackoverflow разработчики говорят, что dlopen() - это частный API.- использование dlopen внутри статической библиотеки в iOS разрешено

В этом случае это нормально использовать dlopen() или быть частным API, он не должен использоваться в пользовательских библиотеках, независимо от природы библиотеки i.e static/dynamic.

Если я не могу использовать dlopen(), тогда кто-то может указать на какой-либо ресурс для альтернативного способа выполнения той же задачи.

Примечание: Это касается библиотеки BSD BSB. (http://www.creytiv.com/)

Update: Библиотека первой попытке загрузить все настроенные модули статически и если это не удается, то он пытается загрузить их динамически с помощью dlopen(). поэтому удаление динамического кода загрузки решит мою проблему.

+1

Apple не позволяет выполнять динамическое связывание в приложении. Кроме того, * любое использование недокументированных методов является основанием для отказа. – borrrden

+0

Я принимаю это как ответ, но у меня нет привилегии отмечать это как ответ. – RK1979

+0

Это потому, что это не ответ. Это комментарий;). – borrrden

ответ

1

dlopen не допускается на версии iOS < iOS 8. См., Например, here.

+1

Я отметил это как правильный ответ, хотя у меня есть ответ из комментариев в год назад. – RK1979

+1

Apple явно рекомендует использовать 'dlopen', когда вы используете встроенные фреймворки и развертываете iOS ниже 8.0: https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#// apple_ref/doc/uid/TP40014214-CH21-SW3 – user102008

+0

Спасибо за это обновление! –