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)
更新:为可读性添加了\ +换行符
我不知道我的项目有什么问题,有人可以帮忙吗?
答案 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 _velocityX
和Level1ViewController.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,这也是我的问题的根源。我删除了示例应用程序目录,一切都很好。