【问题标题】:Using OpenCV in Xamarin.iOS (arm64)在 Xamarin.iOS (arm64) 中使用 OpenCV
【发布时间】:2016-08-08 01:57:53
【问题描述】:

我一直在努力让 OpenCV 在带有 arm64 的 Xamarin.iOS 上运行。我可以在 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: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_destroy_compress'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_abort_compress'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_suppress_tables'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_finish_compress'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_write_marker'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_write_m_header'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_write_m_byte'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_write_tables'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapimin.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapimin.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_start_compress'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapistd.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapistd.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_write_scanlines'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapistd.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapistd.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_write_raw_data'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcapistd.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcapistd.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_c_coef_controller'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jccoefct.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jccoefct.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_color_converter'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jccolor.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jccolor.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_forward_dct'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcdctmgr.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcdctmgr.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_make_c_derived_tbl'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jchuff.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jchuff.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_gen_optimal_table'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jchuff.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jchuff.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_huff_encoder'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jchuff.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jchuff.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_compress_master'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcinit.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcinit.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_c_main_controller'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcmainct.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcmainct.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_marker_writer'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcmarker.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcmarker.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jinit_c_master_control'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcmaster.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcmaster.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:“_jpeg_abort”。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_destroy'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_alloc_quant_table'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_alloc_huff_table'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcomapi.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcomapi.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_add_quant_table'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_set_linear_quality'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_quality_scaling'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_set_quality'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_set_defaults'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_default_colorspace'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_set_colorspace'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/libjpeg.a(jcparam.o) (与先前错误相关的位置) MTOUCH:错误 MT5212:本机链接失败,重复符号:'_jpeg_simple_progression'。 MTOUCH: 错误 MT5213: Duplicate symbol in: /Users/Alexander/Projects/VRMouse/iOS/obj/iPhone/Debug/mtouch-cache/opencv2.a(jcparam.o) (与先前错误相关的位置) MTOUCH: 错误 MT5213: Duplicate symbol in: /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)

我不知道如何解决这个问题以及我哪里出错了。谁能帮帮我?

【问题讨论】:

  • 我不确定,但如果我记得你不需要-ljpeg 标志和${ProjectDir}/libjpeg.a。 (但我不确定,自从我为 ios 编译 opencv 已经有一段时间了。)
  • 感谢您的评论。它让我觉得我在构建时做错了什么,并让我找到了解决方法。
  • 很高兴看到您成功了,并且很好地回答了您自己的问题,以便未来的用户可以受益! :)

标签: c++ ios opencv xamarin.ios opencv3.0


【解决方案1】:

根据我从 Chris Britt 那里收到的 cmets,我感觉 OpenCV 的构建出了点问题。我设法找到了 iOS 框架的预构建版本。 SDK 7.1、armv7、armv7s、arm64、i386、x86_64 (https://github.com/AlexeyIS/OpenCV-iOS)。尽管它没有解释我做错了什么,但它是一个很好的解决方法,允许我在 arm64 上运行 OpenCV。

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-01-22
    • 2017-10-05
    • 2021-09-13
    • 1970-01-01
    • 2020-04-04
    相关资源
    最近更新 更多