Objective-Zip
,编译失败ZLib
,.MiniZip
Flurry 5.0.0
34 duplicate symbols for architecture i386
报告的重复符号
_zipOpen , _unztell, _unzSetOffset, _unzClose
等。
Flurry 4.3.2
相同的项目在XCode 5.0
任何人都面临这个问题时编译得很好?有什么修复吗?
Objective-Zip
,编译失败ZLib
,.MiniZip
Flurry 5.0.0
34 duplicate symbols for architecture i386
报告的重复符号
_zipOpen , _unztell, _unzSetOffset, _unzClose
等。
Flurry 4.3.2
相同的项目在XCode 5.0
任何人都面临这个问题时编译得很好?有什么修复吗?
我遇到了这个问题,因为 FlurryAds 5.0.0 在内部使用 ZipArchive,但我们也在自己的应用程序中使用 ZipArchive(通过 Cocoapods)。这可能是由于使用了 Flurry 使用的任何与 zip 相关的库。
如果您在应用程序中的任何位置使用 ZipArchive 及其依赖项,则存在冲突,因为您的 ZipArchive 副本和 FlurryAds 的 ZipArchives 副本都定义了相同的符号。
这是一个 Objective-C 的问题,因为 Objective-C 不支持命名空间,这会让两个副本一起存在。
您也可以责怪 Flurry,因为他们分发二进制库时没有为其依赖项添加前缀(即FlurryZipArchive
,前缀将是命名空间的替代方法)。
目前不完美的解决方案是从目标中删除ZipArchive.m
、ioapi.c
、mztools.c
、unzip.c
和zip.c
。
你仍然可以导入ZipArchive.h
并使用它,但它有点危险,因为我们不知道 ZipArchive FlurryAds 使用的是哪个版本(或者他们是否可能修改过它),所以我们无法确定我们的头文件是否兼容他们在库中定义的符号。
应该没问题,Flurry 可能使用的是最新版本,没有修改。
但是,我们应该要求 Flurry 使 ZipArchive 成为显式的外部依赖项(这样我们就可以共享一个安装和 ZipArchive 的一个标头),或者为 ZipArchive 添加前缀,这样它就不会影响其他依赖项。
您需要添加另一个框架。您需要在新的 Flurry 5.0.0 中添加一个额外内容。它是关于以下框架:
libz.dylib
编辑:
尝试从构建过程中排除这些文件:ioapi.c/.h mztools.c/.h unzip.c/.h zip.c/.h ZipArchive.mm/.h crypt.h
祝你好运!
我有同样的问题。
重命名 unzip.h 和 unzip.m(对于 MiniZip)——对我有帮助。
我有同样的问题,但没有使用Flurry
. 我正在使用cocoapods
并添加ZipArchive
和objective-zip
库作为依赖项。我Other-Linker-Flags
的项目中有超额价值build settings
:-all_load
。
我的目标只有$(inherited)
它的值Other Linker Flags
,所以这个-all_load
标志是从项目的设置中隐式添加的。这就是那些链接器错误的原因