2011-01-26 2 views
3

Недавно я добавил некоторые OpenFeint код для моих классов и изменил их .mmповторяющийся символ

вдруг я получаю ошибки, которые дублируют символы встречаются в объектные файлы при создании.

л.д.: дублировать символ _audioPlayer в бла-бла /Objects-normal/i386/Stage2.o и/Пользователи/бла .build/Debug-iphonesimulator/blah.build/Объекты-нормальный/i386/Stage1.o

Почему это внезапно вызывает эту ошибку? Что такое ошибка?

У меня есть переменные с одинаковым именем в разных классах, это должна быть проблема?

Благодаря

ответ

3

Вы, вероятно, объявляя две переменные одно и то же имя в глобальном масштабе (не внутри интерфейсов), и компоновщик жалуется на это.

1

Короткий ответ в том, что вы можете подавить эту ошибку с помощью аргумента командной строки для GCC: -Wl, - позволяют многодискового определение

+0

Как это сделать в XCode? спасибо – jarryd

+1

Я не знаком с XCode, но компилируете ли вы с помощью GCC? Если это так, это параметр командной строки, который вы передадите, когда GCC вызывается в ваших файлах. –

+1

Вы можете установить это в настройках проекта/цели в других флагах компилятора –

1

Если вы реализуете свой метод, как показано ниже в файле .mm, произойдет duplicate symbol error.

#import <Foundation/Foundation.h> 

class CppTestOne 
{ 
public: 
    void Test(); 
// { 
//  NSLog(@"Hello C Plus Plus"); 
// } 
}; 

void CppTestOne::Test() 
{ 
    NSLog(@"Hello C Plus Plus"); 
} 

, то вы можете реализовать метод,

#import <Foundation/Foundation.h> 

class CppTestOne 
{ 
public: 
    void Test() 
    { 
     NSLog(@"Hello C Plus Plus"); 
    } 
}; 

//void CppTestOne::Test() 
//{ 
// NSLog(@"Hello C Plus Plus"); 
//} 
более

детали этой ошибки не ясном

3

Эта ошибка также может произойти, если вы импортировать .m файл вместо .h.

#import "SomeClass.m" 
Смежные вопросы