"нет подходящей архитектуры в универсальной оболочке", но файл есть - PullRequest
0 голосов
/ 17 января 2020

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

Мы создаем некоторый код C ++, который использует Tensorflow Lite на нескольких платформах. Я пытаюсь связать его с нашей iOS сборкой. Я создал универсальную общую библиотеку с парой общих библиотек, созданных этой командой. Они создают их как отдельные общие библиотеки с одной архитектурой на файл (одна для macOS, одна для iOS arm64 и одна для iOS x86). Я соединил два файла iOS, используя lipo, и смог соединиться и запустить в симуляторе. К сожалению, я не могу использовать этот путь кода в Simulator (по другим причинам), поэтому я собрал и запустил на устройстве.

Но когда я пытаюсь запустить на устройстве, я получаю

dyld: Library not loaded: @rpath/libtensorflowlite.so  
  Referenced from: /private/var/containers/Bundle/Application/E3E3B0E9-B36E-4ADB-9FFC-CA2D6D2A8AC8/MyApp.app/MyApp  
  Reason: no suitable image found.  Did find:  
  /private/var/containers/Bundle/Application/E3E3B0E9-B36E-4ADB-9FFC-CA2D6D2A8AC8/MyApp.app/Frameworks/libtensorflowlite.so: no matching architecture in universal wrapper  

Я знаю, что в App Store не нравятся биты x86 в универсальных общих библиотеках, поэтому я использовал lipo на этапе сборки Xcode, чтобы удалить часть x86, и теперь мой файл выглядит так:

$ file /Users/rmann/Library/Developer/Xcode/DerivedData/MyApp-fdskkibuvbsubudkmqtgsjxmyqme/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/libtensorflowlite.so  
/Users/rmann/Library/Developer/Xcode/DerivedData/MyApp-fdskkibuvbsubudkmqtgsjxmyqme/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/libtensorflowlite.so: Mach-O universal binary with 1 architecture: [arm64:Mach-O 64-bit dynamically linked shared library arm64]  
/Users/rmann/Library/Developer/Xcode/DerivedData/MyApp-fdskkibuvbsubudkmqtgsjxmyqme/Build/Products/Debug-iphoneos/MyApp.app/Frameworks/libtensorflowlite.so (for architecture arm64): Mach-O 64-bit dynamically linked shared library arm64  

Но он до сих пор этого не видит.

Я делаю нечто похожее с другой библиотекой, которую мы получаем от третьей стороны, и все работает отлично. Как я могу проверить это дальше, чтобы определить, в чем проблема? Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...