在我升级之前,昨天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目录中为不同的库获取相同类型的错误。
这令人难以置信的令人沮丧,因为在升级之前,一切都很顺利,我准备提交我的二进制文件。如果有人有任何建议,我们非常乐意尝试一下。谢谢!
答案 0 :(得分:5)
我遇到了类似的问题并通过编辑我的构建设置来解决它:
Project Navigator
(⌘-1
)。Build Phases
标签。Link Binary with Libraries
和/或Compile Sources
重复的图书馆。现在,我没有使用相同的库或项目配置,因此这可能是偏离基础的。
答案 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文件。删除它们解决了这个问题。