Поиск сообщества
Показаны результаты для тегов 'objective-c'.
Найдено: 2 результата
-
Господа! Тема очень важная. Как использовать сторонние нативные (написанные на Obj-C) фреймворки и SDK в Firemonkey (не дописана). Имеется SDK, включающий статическую библиотеку, заголовок к ней и кучу классов упрощающих работу с библиотекой. libSDK.a SDK.h class1.h class1.m class2.h class3.m ... classN.h classN.m Чтобы упростить себе жизнь, немного покопавшись: www.youtube.com/watch?v=f7lxkv-sZA0 www.youtube.com/watch?v=5cnY8WNKRwg ... я собрал из этой кучи файлов одну статическую библиотеку MyLib.a. (Кому нужно знать как это делается, спрашивайте. Это отдельная тема.) Как заверяют разработчики этого SDK, для использования этой библиотеки необходимо подключить пару нативных фреймворков и две динамические библиотеки: SystemConfiguration.framework CoreTelephony.framework libstdc++.dylib libz.dylib Фреймворки стандартные и уже реализованы в 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 (думаю не нужно говорить, что она делает). Немного покопавшись: ridingdelphi.blogspot.com/2014/01/the-quest-to-migrate-ios-squarecam-app_3169.html blog.blong.com/2013/05/delphi-for-ios-some-notes.html написал хедер 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 твердит одно: [DCC Error] E2597 ld: library not found for -llibz.dylib [DCC Error] E2597 ld: library not found for -llibstdc++.dylib Без этих библиотек моя статическая библиотека MyLib.a не компилируется с ошибками: Error: "blablabla", referenced from: lalalala in MyLib.a(Class1.o); lalalala in MyLib.a(Class1.o); Error: "qwertyuui", referenced from: olololo in MyLib.a(Class2.o); olololo in MyLib.a(Class2.o); Error: "abracadabra", referenced from: abcdefjgh in MyLib.a(Class3.o); abcdefjgh in MyLib.a(Class3.o); ... Кто сталкивался? Кто знает чем помочь? Пишите. Сейчас мой проект простаивает из-за этой проблемы.
-
Всем привет. Помогите перевести код на Delphi C# (Xamarin): public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) { //DeviceToken = Regex.Replace(deviceToken.ToString(), "[^0-9a-zA-Z]+", ""); //Replace the above line whick worked up to iOS12 with the code below: byte[] bytes = deviceToken.ToArray<byte>(); string[] hexArray = bytes.Select(b => b.ToString("x2")).ToArray(); DeviceToken = string.Join(string.Empty, hexArray); } let deviceTokenString = deviceToken.map { String(format: "%02x", $0) }.joined() заранее спасибо