【问题标题】:duplicate symbol _fopen_file_func on C code, in objective-c project在objective-c项目中,C代码上的重复符号_fopen_file_func
【发布时间】:2012-02-21 11:28:10
【问题描述】:

在我的 IOS 项目中,我使用多个静态框架,而不是在她的代码中使用 minizip。

编译时出现重复符号错误。

如果这个错误是由于某个类引起的,其实很简单(重命名类,修复错误)

但在我的情况下,重复的符号从“minizip”文件(如 ioapi.c、zip.c unzip.c)中提供,它们被加载到框架中。

在这种情况下如何才能正常工作?

感谢您的帮助。

【问题讨论】:

    标签: objective-c c xcode4 static-libraries compiler-optimization


    【解决方案1】:

    这是 Objective-C 单一命名空间的缺点。

    如果您可以获得任何头文件,请删除或重命名它们。 如果您无法获取它们,则需要获取源并重命名/重新构建它们,或使用其他库。

    【讨论】:

    • 我有 minizip 的头文件和 C 文件。但我不认为简单的重命名是最好的方法,因为在 ioapi.c 文件中,所有函数都不在类中。
    【解决方案2】:

    @Pixman:仔细查看您(最近)导入项目的文件。

    我发现了相同文件的两个版本(即ioapi.cioapi.hmztools.cmztools.hunzip.cunzip.hzip.czip.h)的情况集成到项目中(在不同级别) - 因此会产生重复的符号。

    这些重复的文件已经存在(为了支持另一个文件解压缩需要),所以我从项目中删除了这些文件的第二个副本,重复符号的问题就消失了(正如你所料)。

    查看项目中是否存在重复文件(和可能的符号)名称的一种方法是查看 Build Phases 部分下的 Compiled Sources 选项项目。
    此视图的附加值是每个文件的路径都是可见的,您可以使用它来确定要删除哪些(重复的)文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多