我使用此处提供的脚本构建了 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/