2010-06-19 28 views
3

錯誤我新的目標C,並具有以下錯誤試圖通過我Objective-C的連接具有重複符號錯誤

 
Building target 「MusicCube」 of project 「MusicCube」 with configuration 「Debug」 — (1 error) 
    cd /Users/varsha_vijay/Downloads/MusicCube 
    setenv MACOSX_DEPLOYMENT_TARGET 10.5 
    setenv PATH "/Xcode3.1.4/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Xcode3.1.4/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
    /Xcode3.1.4/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Xcode3.1.4/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.1.sdk -L/Users/varsha_vijay/Downloads/MusicCube/build/Debug-iphonesimulator -F/Users/varsha_vijay/Downloads/MusicCube/build/Debug-iphonesimulator -filelist /Users/varsha_vijay/Downloads/MusicCube/build/MusicCube.build/Debug-iphonesimulator/MusicCube.build/Objects-normal/i386/MusicCube.LinkFileList -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework OpenGLES -framework QuartzCore -framework AudioToolbox -framework CoreGraphics -framework OpenAL -o /Users/varsha_vijay/Downloads/MusicCube/build/Debug-iphonesimulator/MusicCube.app/MusicCube 
ld: duplicate symbol _num_flight_vertices in /Users/varsha_vijay/Downloads/MusicCube/build/MusicCube.build/Debug-iphonesimulator/MusicCube.build/Objects-normal/i386/Flight.o and /Users/varsha_vijay/Downloads/MusicCube/build/MusicCube.build/Debug-iphonesimulator/MusicCube.build/Objects-normal/i386/EAGLView.o 
collect2: ld returned 1 exit status 
    ld: duplicate symbol _num_flight_vertices in /Users/varsha_vijay/Downloads/MusicCube/build/MusicCube.build/Debug-iphonesimulator/MusicCube.build/Objects-normal/i386/Flight.o and /Users/varsha_vijay/Downloads/MusicCube/build/MusicCube.build/Debug-iphonesimulator/MusicCube.build/Objects-normal/i386/EAGLView.o 
    collect2: ld returned 1 exit status 
Build failed (1 error) 

導入定義一個類時,這裏是我的程序的組織方式。

1.我在Flight.h類中定義的C頭文件vertices.h

#ifndef VERTICES_H 
#define VERTICES_H 
const int num_flight_vertices = 8; 
#endif 

2.我導入這個頭文件

#import "vertices.h" 

@interface Flight : NSObject { 

3.我導入此航班。 h文件在我的EAGLView.h類

#import "vertices.h" 
@interface EAGLView : UIView { 
@private 
Flight *flight; 

當我建立這個,我得到的錯誤。

有人可以幫助我這個。

感謝, VJ

回答

7

你在你的項目中導入vertices.h其他地方?

一般來說,你在頭文件中聲明常量和在實現文件中,這避免了這個問題定義他們。所以你可以這樣做:

// vertices.h 
#ifndef VERTICES_H 
#define VERTICES_H 
extern const int num_flight_vertices; 
#endif 

// vertices.c 
#import vertices.h 
const int num_flight_vertices = 8; 
+1

既然你聲明它是extern,那麼就不需要#ifndef保護。 「extern」的意思是「我會在別的地方給它一個價值。」你可以儘可能地做到這一點。在ObjC中,由於無論如何都使用#import,因此通常不需要#ifndef保護。 – 2010-06-20 03:19:42