Xamarin iOS Собственная ссылка работает на Simulator, дублирует символы на устройстве

Я пытаюсь связать сложный родной проект для Xamarin. Проект Obj-C UI, который зависит от обложек Native Obc-С++ поверх библиотеки С++ (это встроенный проект): введите описание изображения здесь

У меня есть собственный исходный и тестовый проект в Xcode, и все идет хорошо.

Затем я создаю живые библиотеки всех зависимостей, добавляю их в проект привязки к xamarin.

введите описание изображения здесь

В основном проекте мне пришлось настроить параметры gcc для симулятора и устройства:

-vvvv -cxx --registrar:static -gcc_flags "-L${ProjectDir}/../RMSDKWrapper -dead_strip -lstdc++ -lstdc++.6.0.9 -lpthread -lsqlite3 -lxml2 -ObjC -ladept-iOS -lxml-iOS -lz -lcurl -lssl -lcrypto -ldp-iOS -lePub3-iOS -L/usr/lib -I/usr/include/libxml2"

Все отлично работает на Simulator, но когда я пытаюсь скомпилировать это для устройства, компоновщик не может связывать libs из-за повторяющихся символов. Я проверил все библиотеки с помощью "nm", все объекты выглядят одинаково для Simulator и Device. Я видел, что только дублированные объекты - это классы Obj-С++ во встроенной оболочке (rmsdk_wrapper2.xcodeproj). nm находит объекты в оболочке lib и в lib из хост-проекта (TestRMSD.xcodeproj). Но для симулятора он хорошо решает, ни для устройства.

UPD Версия XS: https://gist.github.com/ad1Dima/eb1cc390930e191a5454260da2410c91

Журнал сборки: https://gist.github.com/ad1Dima/8ea8c4a271ef63efb310252234b32ae5

Мне нужна идея, как я могу решить эту проблему.

Ответ 1

Мне пришлось переместить весь собственный код в один проект, чтобы решить эту проблему. Таким образом, у меня есть одна lib и отсутствие ссылок на устройство.

Но я не понял, что случилось с компоновщиком.

Ответ 2

Возможные причины этой ошибки:

  • Одна и та же родная библиотека включена дважды.
  • Два разных родных библиотеки определяют одинаковые символы.
  • Собственная библиотека неправильно построена и содержит один и тот же символ более одного раза.

Инструкции по устранению ошибок связи можно найти здесь: https://developer.xamarin.com/guides/ios/troubleshooting/mtouch-errors/#MT5212