2010-06-19 7 views
3

Je suis nouveau à Objective C et ont l'erreur suivante lorsque vous essayez d'importer une classe définie par moierreur c Objectif lien avec l'erreur double symbole

 
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) 

Voici la façon dont mon programme est organisé.

1. Je fichier d'en-tête défini ac vertices.h

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

2. J'importe ce fichier d'en-tête dans ma classe Flight.h

#import "vertices.h" 

@interface Flight : NSObject { 

3. J'importe ce vol. h fichier dans ma classe EAGLView.h

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

lorsque je compile ceci, j'obtiens l'erreur.

Quelqu'un peut-il m'aider avec ceci.

Merci, VJ

Répondre

7

vertices.h Vous importe nulle part ailleurs dans votre projet?

En général, vous déclariez constantes dans un fichier d'en-tête et définir les dans le fichier de mise en œuvre, ce qui évite ce problème. Vous pouvez donc faire ceci:

// 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

Puisque vous le déclarez externe, la protection #ifndef n'est pas nécessaire. "extern" signifie "je vais lui donner une valeur ailleurs". Vous pouvez le faire autant que vous le souhaitez. Dans ObjC, vous n'avez généralement pas besoin de beaucoup de protection #ifndef en raison de l'utilisation de #import de toute façon. –

Questions connexes