1

У меня есть библиотека NeoSpeech (текст в речь) для IOS с файлами базы данных .a, .h &. Эта библиотека отлично работает в ios. Теперь я должен использовать эту библиотеку в проекте Xamarin. Я пытаюсь использовать статическую библиотеку, но невозможно вызвать библиотеку внутри другого, поэтому я не могу использовать библиотеку neospeech внутри статической библиотеки. Существует еще один вариант в xamarin i.e. Нативный C-связывание с xamarin, но для этого нет соответствующей документации. Также полезно использовать Linking Native Libraries в моем сканировании. Пожалуйста, помогите мне.Позвоните в библиотеку IOS в Xamarin

Благодаря

ответ

0

Попробуйте использовать Objective Sharpie он принимает файлы заголовков (не .a файл) и создает файлы C# API определения: ApiDefinition.cs и StructAndEnums.cs. Иногда зависит от вас h файлов он генерирует только StructAndEnums. Это может быть хорошо, но если это не тори, вы должны сообщить о некоторых ошибках, которые вы можете выполнить с помощью SO.

Затем вы можете создать проект привязки, ссылаясь на файл .a и создав ApiDefinitions. Если у вас есть отдельный .a для разных процессорных архитектур, вы можете сделать FAT-библиотеку в Mac OS bash, используя lipo и ссылаться только на fat lib. За вашу LIBS это будет:

lipo -create libvt_eng_james_univ.a, libvt_eng_james_armv77s64.a libvt_eng_beth_simulation.a -output lib_eng_james_fat.a 

Может быть libvt_eng_james_univ.a уже жира, Вы можете проверить его

lipo -info libvt_eng_james_univ.a 

Он покажет вам все архитектуры в жире Lib: i386 x86_64 для симулятор armv7, armv7s arm64 для устройства.

После этого просто отправьте этот обязательный проект из основного проекта Xamarin как простую библиотечную программу. И тогда вы можете использовать все классы, как из других библиотек.

+0

Спасибо за ответ. На самом деле есть три файла библиотеки (libvt_eng_james_univ.a, libvt_eng_james_armv77s64.a и libvt_eng_beth_simulation.a). Я попытался Objective Sharpie для univ.a-файла. Он создает только файл StructsAndEnums.cs, и нет файла Apidefinition. Код внутри StructsAndEnums: статический класс CFunctions \t { // extern void VT_UNLOADTTS_ENG_James (int nSpeakerID); \t [DllImport ("__Internal")] \t \t [Проверка (PlatformInvoke)] \t статических ехЬегпы недействительного VT_UNLOADTTS_ENG_James (INT nSpeakerID); } Пожалуйста, дайте мне знать, как назвать эти методы в проектах Xamarin. – Tarlok

+0

Также мне нужно создать жировую библиотеку, объединив все файлы из трех библиотек (libvt_eng_james_univ.a, libvt_eng_james_armv77s64.a и libvt_eng_beth_simulation.a), или это работает с libvt_eng_james_univ.a. – Tarlok

+0

@Tarlok вы должны использовать заголовочные файлы с sarpie, а не библиотекой. Он будет анализировать определение публичных классов и методов и создавать для них определения C#. Обновлен мой ответ. – ad1Dima

0

Кажется, что у вас с вами такая же проблема, проверьте мой вопрос, есть замечательный ответ на ссылку Objective-C's library на Xamarin.

How to bind an Objective-C static library to Xamarin.iOS?

Надеется, что это может помочь вам.