ios - 将 OpenCV 框架导入 Unity 项目 iOS 时出错

标签 ios opencv compiler-errors unity-game-engine linker-errors

我使用此处提供的脚本构建了 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 下搜索了链接器选项,看看是否可以使其更加宽松,但没有找到任何内容。

知道如何解决该错误吗?

最佳答案

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

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

关于ios - 将 OpenCV 框架导入 Unity 项目 iOS 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11215301/

相关文章:

ios - 使用SCRecorder时访问权限错误

android - 跨平台 openGLES?

opencv - 使用C API的opencv二进制阈值:将阈值设置得很小会过滤掉大多数像素

haskell - 如何为 cabal repl 设置 ghci 选项?

ios - 限制 Google AutoComplete API 仅显示附近的位置

使用蓝牙控制 iOS AVPlayer

OpenCV 3.4 : OpenCL on RaspberryPi 4 GPU

c++ - 如何获取文本文件中的RGB值和坐标值?

oracle - PLS-00497 : cannot mix between single row and multi-row (BULK) in INTO list

compiler-errors - 错误在Centos6.4中更新lib.so.6文件