将OpenCV Framework导入Unity Project iOS时出错

时间:2012-06-26 20:17:58

标签: ios opencv compiler-errors unity3d 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

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

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

如果我使用OpenCV在xcode上创建项目,则编译时没有错误。 没有OpenCV的Unity3d项目也可以工作。

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

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

知道如何解决错误吗?

1 个答案:

答案 0 :(得分:1)

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

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