- 0
Мануал по использованию сторонних нативных SDK. Нужна Ваша помощь
-
Похожий контент
-
- 2 ответа
- 825 просмотров
-
- 0 ответов
- 1 079 просмотров
-
- 2 ответа
- 1 551 просмотр
-
- 10 ответов
- 1 522 просмотра
-
- 10 ответов
- 1 890 просмотров
-
- 0 ответов
- 2 672 просмотра
-
- 4 ответа
- 4 662 просмотра
-
- 1 ответ
- 1 561 просмотр
-
- 36 ответов
- 42 196 просмотров
-
- 7 ответов
- 3 857 просмотров
-
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Дениска
Господа! Тема очень важная.
Как использовать сторонние нативные (написанные на Obj-C) фреймворки и SDK в Firemonkey (не дописана).
Имеется SDK, включающий статическую библиотеку, заголовок к ней и кучу классов упрощающих работу с библиотекой.
Чтобы упростить себе жизнь, немного покопавшись:
я собрал из этой кучи файлов одну статическую библиотеку MyLib.a.
(Кому нужно знать как это делается, спрашивайте. Это отдельная тема.)
Как заверяют разработчики этого SDK, для использования этой библиотеки необходимо подключить пару нативных фреймворков и две динамические библиотеки:
Фреймворки стандартные и уже реализованы в RAD Studio, а библиотеки присутствуют в скачиваемом IOS SDK по пути:
C:\Users\Username\Documents\Embarcadero\Studio\SDKs\iPhoneOS9.0.sdk\usr\lib.
Embarcadero "побеспокоилась" о подключении сторонних статических библиотек. Создаётся функция (пример взят из сканера баркодов):
implementation
procedure FakeLoader(произвольное имя); cdecl; external 'MyLib.a' name 'OBJC_CLASS_$_MyClass';
Реальная польза этой функции для меня остаётся загадкой, кроме того, что без неё приложение не увидит библиотеки и при попытки обратится к классу выдаст: "ObjectiveC class MyClass could not be found".
Для начала я создал на XCode libHelloWorld.a (думаю не нужно говорить, что она делает).
Немного покопавшись:
написал хедер HelloWorld.pas, в котором описал классы и функции хранящиеся в этой библиотеке. Подключил pas в uses в проекте и всё заработало.
(Кому нужно знать как это делается, спрашивайте. Это отдельная тема.).
Решил теперь подключить мою MyLib.a, которую я создал из основе SDK, можно сказать конвертировал. Но она требует две динамические библиотеки, что в случае с HelloWorld не требовалось.
Как подсказывает Embarcadero, мне нужно дописать в мой FakeLoader директиву dependency. Итого:
procedure FakeLoader; cdecl; external 'MyLib.a' name 'OBJC_CLASS_$_MyClass'
dependency 'libstdc++.dylib', 'libz.dylib';
Но вот тут и нужна Ваша помощь!
Я помещал эти библиотеки прямо в проект, указывал абсолютные пути из MacPC и из моего PC, копировал оригинальные библиотеки из MacPC, писал их с расширением и без, с префиксом "lib" и без. IDE твердит одно:
Без этих библиотек моя статическая библиотека MyLib.a не компилируется с ошибками:
Ссылка на комментарий
6 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.