2011-03-13 45 views
10

昨天升级之前,Xcode 3中的所有工作都很完美。所以我完成了升级,重新启动了我的电脑,并打开了我的旧项目。我不得不重新配置一些像标题路径这样的设置,以便我可以开始编译。我使用的AdWhirl的广告中介服务,在这一点上我的错误开始看像升级到Xcode 4 - 导致构建错误的重复符号错误的无尽流

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目录中的其他库中获得相同类型的错误。

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

+0

我有同样的问题,我已阅读@贾斯汀的答案,但我找不到这些参数的检查 – JonLOo 2011-03-15 15:23:25

回答

5

我只是碰到了类似的问题,并通过编辑我的生成设置解决它:

  1. 选择在左边(⌘-1)的Project Navigator从导航列表。
  2. 选择您的项目文件。
  3. 从编辑器区域出现 的列表中选择您的目标。
  4. 切换到Build Phases选项卡。
  5. 检查Link Binary with Libraries和/或Compile Sources为 重复库。

现在,我没有使用相同的库或项目配置,所以这可能是离基地的方式。

1

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

5

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

这个错误给我造成了无尽的问题。

+0

你刚刚为我节省了很多时间:) – gillyD 2013-11-16 14:31:00

0

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

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

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

0

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

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