0

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

知道如何解决错误吗?

4

1 回答 1

1

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

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

于 2012-06-27T12:16:43.517 回答