在我IOS项目中,我使用了多个静态框架,而不是在她的代码中使用minizip。
当我编译时,我有一个重复符号的错误。
如果这个错误是由一个类引起的,那么很简单(重命名类,修复错误)
但在我的例子中,从"minizip“文件(如ioapi.c,zip.c unzip.c )中提供的重复符号是加载到框架中的。
在这种情况下,如何才能正确工作呢?
谢谢你的帮助。
发布于 2012-02-22 13:11:46
这是Objective-C的单一名称空间的缺点。
如果可以获得任何头文件,请删除或重命名它们。如果您无法获取它们,您将需要获取源代码并重命名/重新构建它们,或者使用其他库。
发布于 2014-08-06 23:52:19
@Pixman:仔细查看您(最近)导入到项目中的文件。
我发现一种情况,同一文件的两个版本(即ioapi.c
、ioapi.h
、mztools.c
、mztools.h
、unzip.c
、unzip.h
、zip.c
、zip.h
)被集成到项目中(在不同级别)-因此会产生重复的符号。
这些重复的文件已经存在(为了支持另一个文件解压缩需求),所以我从项目中删除了这些文件的第二个副本,重复符号的问题也就消失了(正如你所期望的)。
要查看项目中是否存在重复的文件(以及可能的符号)名称,一种方法是查看项目的Build Phases部分下的Compiled Sources选项。
这个视图的附加价值是,每个文件的路径都是可见的,您可以使用它来确定要删除哪些(重复的)文件。
https://stackoverflow.com/questions/9376763
复制