我使用此处提供的脚本构建了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下搜索了一个链接器选项,看看我是否可以让它更宽松但没有找到任何东西。
知道如何解决错误吗?
答案 0 :(得分:1)
听起来Unity和OpenCV都是使用自己的libz
副本构建的,并且在链接时发生冲突。 (_adler32
是此库中使用的校验和函数。)
您需要选择一个框架来拥有这些公共库并相应地重建。由于libz
无论如何都在iOS中,您也可以构建这两个框架以使用这些库的系统版本。