链接器命令失败,退出代码1:重复的符号

时间:2012-07-30 18:32:16

标签: duplicates symbols

ld: duplicate symbol _velocityX in \
/Users/Student/Library/Developer/Xcode/DerivedData/finalproject-ffzevekmatxvhrgisgeleoijyllr/Build/Intermediates/finalproject.build/Debug-iphonesimulator/finalproject.build/Objects-normal/i386/Level2ViewController.o \
and \
/Users/Student/Library/Developer/Xcode/DerivedData/finalproject-ffzevekmatxvhrgisgeleoijyllr/Build/Intermediates/finalproject.build/Debug-iphonesimulator/finalproject.build/Objects-normal/i386/Level1ViewController.o \
for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

更新:为可读性添加了\ +换行符

我不知道我的项目有什么问题,有人可以帮忙吗?

4 个答案:

答案 0 :(得分:23)

我有同样的问题。但这是我的错。 :)。您可能写了#import file.m而不是#import file.h。因此Compiles Resource将复制符号file.o. - 而已! ^^要查看它,您删除该错误文件,build - >显示错误行 - >然后重新复制它。

答案 1 :(得分:4)

我有同样的错误,因为我在两个单独的.m文件中定义了一个具有相同名称的常量。一旦我在其中一个中更改了名称,就会编译。

例如在我的ViewController.m中,我有:

#import "ViewController.h"
const int IPHONE4 = 480;

并在我的菜单中:

#import "Menu.h"
const int IPHONE4 = 480;

我将我的Menu.m更改为:

#import "Menu.h"
const int IPHONE4H = 480;

答案 2 :(得分:2)

double _velocityXLevel1ViewController.c包含的标头文件中可能包含Level2ViewController.c,标题应为extern double _velocityX,而只有一个.c文件中的>应该有double _velocityX。 (假设_velocityX的类型是double,这似乎是合理的,并假设这是C或C ++而不是Fortran或其他东西。)

答案 3 :(得分:2)

我在尝试将一些框架集成到我的应用程序时遇到了同样的错误。

首先我使用的是Sparrow - 一个图形库,默认情况下我有一个main.m文件,在我尝试集成Parse之前一切都很好,这也取决于FacebookSDK。在FacebookSDK文件夹中有一个名为Scrumptious的示例应用程序,其中包含main.m,这也是我的问题的根源。我删除了示例应用程序目录,一切都很好。