10

在我升级之前,昨天在 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 目录中的不同库中得到相同类型的错误。

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

4

5 回答 5

5

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

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

于 2011-03-28T15:39:03.427 回答
5

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

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

现在,我没有使用相同的库或项目配置,所以这可能有点离谱。

于 2011-03-15T14:20:30.843 回答
1

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

于 2011-03-24T04:51:16.837 回答
0

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

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

于 2012-06-23T21:12:33.977 回答
0

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

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

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

于 2011-04-28T12:00:39.640 回答