Использование OpenCV в Xamarin.iOS (arm64)

Некоторое время я изо всех сил пытался заставить OpenCV работать на Xamarin.iOS с arm64. Последняя версия, которую я смог найти на opencv.org, похоже, не предназначена для arm64. У меня были проблемы со сборкой самой последней библиотеки, но я начал сборку для OpenCV 2.4.12 (https://github.com/Itseez/opencv/tree/2.4.12). Однако, когда я добавляю библиотеку в свое решение (через библиотеку привязок), я получаю следующую ошибку:

MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_free_large. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_free_small. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_get_large. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_get_small. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_mem_available. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_mem_init. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_mem_term. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5210: Native linking failed, undefined symbol: _jpeg_open_backing_store. Please verify that all the necessary frameworks have been referenced and native libraries are properly linked in.
MTOUCH: error MT5202: Native linking failed. Please review the build log.

Я читал на https://github.com/twelve17/openalpr-ios/issues/5 что мне нужно было связать с libjpeg. Я делаю это с помощью следующей команды mtouch:
-gcc_flags "-L${ProjectDir} -ljpeg -force_load ${ProjectDir}/libjpeg.a"
Однако теперь я получаю сообщение об ошибке, что дубликаты доступны:

MTOUCH: повторяющийся символ _jpeg_std_error в:
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_CreateCompress».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jpeg_destroy_compress».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_abort_compress».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jpeg_suppress_tables».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jpeg_finish_compress'.
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jpeg_write_marker'.
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_write_m_header».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jpeg_write_m_byte'.
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_write_tables».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jpeg_start_compress».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapistd.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapistd.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jpeg_write_scanlines».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapistd.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapistd.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jpeg_write_raw_data».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapistd.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapistd.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jinit_c_coef_controller».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jccoefct.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jccoefct.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jinit_color_converter».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jccolor.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jccolor.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jinit_forward_dct».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcdctmgr.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcdctmgr.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jpeg_make_c_derived_tbl'.
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jchuff.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jchuff.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_gen_optimal_table».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jchuff.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jchuff.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jinit_huff_encoder'.
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jchuff.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jchuff.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jinit_compress_master».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcinit.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcinit.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: сбой собственного связывания, повторяющийся символ: '_jinit_c_main_controller'.
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcmainct.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcmainct.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jinit_marker_writer».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcmarker.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcmarker.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: сбой собственного связывания, повторяющийся символ: '_jinit_c_master_control'.
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcmaster.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcmaster.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jpeg_abort'.
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: '_jpeg_destroy'.
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jpeg_alloc_quant_table'.
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: '_jpeg_alloc_huff_table'.
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (расположение связано с предыдущей ошибкой)
MTOUCH: ошибка MT5212: сбой собственного связывания, повторяющийся символ: '_jpeg_add_quant_table'.
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_set_linear_quality».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_quality_scaling».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jpeg_set_quality».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: не удалось создать собственное соединение, дублированный символ: «_jpeg_set_defaults».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_default_colorspace».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_set_colorspace».
MTOUCH: ошибка MT5213: дубликат символа в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5212: Не удалось создать собственное соединение, дублированный символ: «_jpeg_simple_progression».
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (расположение, связанное с предыдущей ошибкой)
MTOUCH: ошибка MT5213: повторяющийся символ в: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (расположение, относящееся к предыдущей ошибке)
MTOUCH: ошибка MT5201: сбой собственного связывания. Пожалуйста, просмотрите журнал сборки и пользовательские флаги, предоставленные gcc: -L / Users / Alexander / Projects / VRMouse / iOS -ljpeg -force_load /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a
MTOUCH: ошибка MT5202: сбой собственного связывания. Пожалуйста, просмотрите журнал сборки.

3 Warning(s) 105 Error(s)

Я понятия не имею, как решить это и где я иду не так. Может кто-нибудь мне помочь?

3

Решение

Основываясь на комментариях, которые я получил от Криса Бритта, я почувствовал, что что-то пошло не так со встроенным OpenCV. Мне удалось найти готовую версию фреймворка для iOS. SDK 7.1, armv7, armv7s, arm64, i386, x86_64 (https://github.com/AlexeyIS/OpenCV-iOS). Хотя это не объясняет, что я делал неправильно, это хороший обходной путь, который позволяет мне запускать OpenCV на arm64.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]