Xamarin. iOS как: включить несколько толстых фреймворков с одинаковыми функциями точки входа? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть две толстые рамки с двумя срезами каждая (arm64 и x86_64): MyDbEngine.framework и MyDbClient.framework. Каждая структура содержит одинаковые функции точки входа: MyDbConfigure (), MyDbInit () и MyDbDeInit (). Я пытаюсь выяснить, как добавить ОБА этих фреймворков в проект приложения Xamarin. iOS iOS, чтобы приложение устанавливало обе фреймворки, но когда я вызываю точку входа, это нужно сделать в указанном * 1010. * framework (MyDbClient.framework в этом случае). Кажется, я не могу понять, как это сделать из-за того, что DllImport на iOS заставляет использовать __Internal вместо указания специфической c инфраструктуры для загрузки.

Например, в моем Проект приложения Xamarin. Android Я могу добавить отдельные эквиваленты файла динамически связанных общих объектов (.so) для моих платформ (MyDbEngine.so и MyDbClient.so) в соответствующие файлы \ lib \ arm64-v8a \ или \ lib \ x86_64 \ папки, а затем укажите [DllImport(libZenDb, EntryPoint = "ZenDbConfigure")] для явной загрузки точки входа из MyDbClient.so.

Есть ли способ сделать это в Xamarin. iOS?

1 Ответ

0 голосов
/ 06 февраля 2020

По-видимому, я разбирал документацию для " Использование библиотек C / C ++ с Xamarin - Упаковка собственной библиотеки " с документацией по включению фреймворков и предполагая, что вызов DllImport должен ссылаться на "__Internal" на загрузить фреймворки.

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

[DllImport("MyDbClient.framework/MyDbClient, EntryPoint = "MyDbConfigure"]

...