Предположим, я прочитал . , хотя я не думаю, что это актуально.
OS X: преобразовать .dylib в .a / .o (динамический в статический)?
Ответы (1)
Intel Threading Building Blocks (TBB) доступен в виде двоичного кода для Windows, Mac и Linux. Если вы планируете использовать libtbb.dylib
из дистрибутива Mac на iOS, то вам не повезло. Дистрибутив Mac ориентирован на Intel (32- и 64-разрядные версии). Поскольку iOS работает на процессорах ARM, вы не смогли бы ее использовать, даже если нашли способ преобразовать динамическую библиотеку в статическую.
Если вы нашли libtbb.dylib
файл где-то еще, предназначенным для ARM, вы, вероятно, могли бы использовать его на iOS. На самом деле можно загружать динамические библиотеки на iOS. Взгляните на человека dlopen (3) страница.
Наконец, вы должны прочитать о Grand Central Dispatch (GCD) вместо этого это встроенная поддержка одновременного выполнения кода на многоядерном оборудовании в iOS и OS X.
dlopen
не работает на iOS (хотя, чтобы увеличить путаницу, я думаю, что есть способ заставить его работать в симуляторе). Я слышал, что Apple хочет, чтобы приложения были простыми и самодостаточными, и чтобы избежать ада DLL в App Store. Если кто-то успешно использовал дилиб в приложении для iOS, прокомментируйте.
- person Quuxplusone; 03.09.2012
concurrent_queue
и concurrent_hash_map
(в основном выполняя действия производителя / потребителя через concurrent_queue
). Мы могли бы довольно легко заменить TBB на std::queue
, защищенный std::mutex
, но мы подозреваем, что реализация TBB более эффективна и содержит меньше ошибок.
- person Quuxplusone; 03.09.2012
-[NSBundle load]
, который, я уверен, в конечном итоге вызывает dlopen
. (Этот проект не был отправлен в App Store.) Однако код в пакете или dylib должен быть подписан с тем же профилем подготовки, что и приложение. Я думаю, что беспокойство Apple по поводу динамических библиотек связано не с адом DLL, а скорее с последствиями для безопасности загрузки и выполнения кода.
- person 0xced; 04.09.2012