【问题标题】:Duplicate interface declaration for class类的重复接口声明
【发布时间】:2014-06-26 17:14:53
【问题描述】:

我有一个有多个目标的项目。还有一个嵌入式项目,其输出是一个框架。
其中一个目标只需要该框架的几个文件 {.h,.m},所以.. 我只是引用它们。现在,当我构建该特定目标时,我得到了这个错误:

在 /Users/../someClass.m:10 包含的文件中:Foo.h:11:1: 错误:
类“Foo”的重复接口定义
@interface Foo : NSObject {
^
/Users/....MyProject/DerivedData/MyProject/Build/Products/Debug/MyFramework.framework/Headers/Foo.h:11:12:

注意:之前的定义在这里
@interface Foo : NSObject {
^

我看到的是:Xcode 找到 Foo 类的两个副本,一个是引用的,另一个是 MyFramework 中包含的。 (两个副本是同一个文件)。
问题是,这个目标不是用 MyFramework 构建、链接或做任何事情。 (又名。对于我的目标:0 个目标依赖项,Foo.m 包含在“编译源”中,而 MyFramework 未列在“将二进制文件与库链接”中)。

问题: 1. 我如何在不链接 MyFramework 的情况下构建我的目标

谢谢!

仅供参考。
我正在使用 Xcode 4.6.3
该框架是 C、C++ 和 ObjC 的混合体。 - 编译为 ObjC++ 并启用 ARC。
我在构建时遇到问题的目标是 C 和 ObjC 没有 ARC。

【问题讨论】:

  • 如果你删除派生数据会发生什么?
  • 尝试清理您的项目并重建
  • “清洁(产品 > 清洁)”后的结果相同。在我删除了 derivedData 后,我得到的错误更少,但仍然是一样的。

标签: objective-c xcode objective-c++ xcode4.6.3


【解决方案1】:

添加包含保护。看这里: C++ #include guards

如果您已经有一个包含保护,请仔细检查#ifndef 和#define 是否匹配。

【讨论】:

  • 在 Objective-C 中,您使用 #import 来包含标头并且不需要包含保护。
猜你喜欢
  • 2011-04-24
  • 2011-07-08
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
相关资源
最近更新 更多