升级到Xcode 4 - 无尽的重复符号错误流导致构建错误

时间:2011-03-13 19:16:06

标签: objective-c xcode xcode4 adwhirl

在我升级之前,昨天Xcode 3中的一切都运行良好。所以我完成了升级,重新启动了计算机,并打开了我的旧项目。我不得不重新配置一些设置,如标题路径,以便我可以开始编译。我正在使用AdWhirl进行广告调解,此时我的错误开始读取类似

的内容
   duplicate symbol _OBJC_METACLASS_$_SBJSON in /Users/Admin/Desktop/TMapLiteAdwhirl/AdWhirl/MMSDK/libMMSDK.a(SBJSON.o) and 
/Users/Admin/Library/Developer/Xcode/DerivedData/TruxMapLite-bgpylibztethnlhkfkdumpvrjvgy/Build/Intermediates/TruxMapLite.build/Debug-iphoneos/TruxMapLite.build/Objects-normal/armv6/SBJSON.o for architecture armv6

它所指的库是我在AdWhirl中包含的其中一个广告网络的SDK。两个“重复符号”都指向相同的文件,但它们使用不同的路径。如果我还有XCode 3,我只是尝试从构建路径中排除这些库,但我不知道如何在Xcode 4中完成。我已经尝试了所有方法来删除库和所有相关的来自我的项目的文件,但是当我这样做时,我会在AdWhirl目录中为不同的库获取相同类型的错误。

这令人难以置信的令人沮丧,因为在升级之前,一切都很顺利,我准备提交我的二进制文件。如果有人有任何建议,我们非常乐意尝试一下。谢谢!

5 个答案:

答案 0 :(得分:5)

我遇到了类似的问题并通过编辑我的构建设置来解决它:

  1. 从左侧导航器列表中选择Project Navigator⌘-1)。
  2. 选择您的项目文件。
  3. 从显示的列表中选择目标 在编辑区。
  4. 切换到Build Phases标签。
  5. 检查Link Binary with Libraries和/或Compile Sources 重复的图书馆。
  6. 现在,我没有使用相同的库或项目配置,因此这可能是偏离基础的。

答案 1 :(得分:5)

确保您没有导入.m文件。

这个错误给我带来了无穷无尽的问题。

答案 2 :(得分:1)

我不确定您的设置,但我有类似的问题,并通过更改我的构建位置修复它。我已将其设置为xcode 3中的绝对路径,并忘记在xcode中更改此设置4.更改“派生数据”选项会立即修复我的所有错误。此选项位于首选项 - >位置

答案 3 :(得分:0)

我刚刚通过在我的一个类的头文件中用#import语句替换@class来解决这个问题。

理论上应该只使用@class声明(和实现对应的#import)只是不想用“重复符号”错误编译。

因此,请查看@class与#import语句。

答案 4 :(得分:0)

我发现我的源文件夹中的旧目标文件来自旧的Makefile构建。当我将源文件夹添加到XCode时,我不小心添加了源文件和目标文件。这导致了这些重复的符号错误。从我的源文件夹中删除.o和.lo文件有帮助。

我的源文件夹中还有一个来自另一个旧版本的.libs文件夹。那也包含.o文件。删除它们解决了这个问题。