- 0
Мануал по использованию сторонних нативных SDK. Нужна Ваша помощь
-
Похожий контент
-
- 2 ответа
- 424 просмотра
-
- 0 ответов
- 813 просмотра
-
- 2 ответа
- 1 322 просмотра
-
- 10 ответов
- 1 259 просмотров
-
- 10 ответов
- 1 620 просмотров
-
- 0 ответов
- 2 460 просмотров
-
- 4 ответа
- 3 900 просмотров
-
- 1 ответ
- 1 395 просмотров
-
- 36 ответов
- 41 223 просмотра
-
- 7 ответов
- 3 390 просмотров
-
-
Последние посетители 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 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.