【问题标题】:Error Importing OpenCV Framework to Unity Project iOS将 OpenCV 框架导入 Unity 项目 iOS 时出错
【发布时间】:2012-06-26 20:17:58
【问题描述】:

我使用此处提供的脚本构建了 OpenCV: http://aptogo.co.uk/2011/09/opencv-framework-for-ios/

然后创建了一个Unity3d iOS项目,从Unity3d生成xcode项目,在项目中添加OpenCV框架并尝试编译。

我收到以下错误:

duplicate symbol _adler32 in /my-path/Libraries/libiPhone-lib.a(adler32.o) and /my-path/OpenCV.framework/OpenCV(adler32.o) for architecture armv7

我尝试使用“lipo”和“ar”从 OpenCV 库中删除 adler32.so,然后重新打包库,我得到了另一个重复的符号。最终我从 OpenCV 库中删除了很多对象,它开始抱怨缺少符号。

这是一个有趣的实验,但没有奏效。

如果我使用 OpenCV 在 xcode 上创建一个项目,它编译时不会出错。 没有 OpenCV 的 Unity3d 项目也可以。

  • xcode 版本:4.3.3
  • unity3d 版本:3.5.2(最新)
  • OpenCV:2.4.1 - 添加 OpenCV 作为框架。

我在 xcode 下搜索了一个链接器选项,看看是否可以让它更宽松,但没有找到任何东西。

知道如何解决这个错误吗?

【问题讨论】:

    标签: ios opencv compiler-errors unity3d linker-errors


    【解决方案1】:

    听起来 Unity 和 OpenCV 都是用它们自己的 libz 副本构建的,并且在链接时发生冲突。 (_adler32 是这个库中使用的校验和函数。)

    您需要选择一个框架来拥有这些通用库并相应地进行重建。由于libz 无论如何都在 iOS 中,您不妨构建这两个框架以使用这些库的系统版本。

    【讨论】:

    • 我无法控制 Unity 库,因此无法选择。我能做的,并且像上面所说的那样,就是把它从 OpenCV 框架中删除。这样做时,我发现我从 OpenCV 中删除了越来越多的“共享”符号,最终其中一些对象文件包含差异,如果我删除了这些对象,OpenCV 会开始抱怨缺少符号。我不完全确定它为什么会发生。感谢您的建议
    • 我不认为仅仅使用lipoar 就足以解决这个问题。您确实需要在指定 ZLIB_LIBRARYZLIB_INCLUDE_DIR 时重新构建 OpenCV 以正确解析所有链接器引用。
    • 您能否就如何以及使用什么值来定义 ZLIB_LIBRARY 和 ZLIB_INCLUDE_DIR 提供一些指导?我对构建 OpenCV 的过程有点迷茫
    • 我刚刚发现了一个专门针对该问题的 SO 问题:stackoverflow.com/questions/8236028/…
    • 谢谢,解决了我的问题。很抱歉延迟接受答案我正忙于项目的其他部分,今天才回来。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多