Повторяющийся символ _calculate_string сообщение об ошибке iPhone - PullRequest
0 голосов
/ 15 января 2012

Это код ошибки, который я получаю при попытке собрать для тестирования, как мне найти причину этой ошибки. Я дублировал 2 файла в xcode и внес небольшие изменения в копию, чтобы создать второй экран.

ld: duplicate symbol _calculate_string in /Users/Lucky3kj/Library/Developer/Xcode   /DerivedData/MiniCalculator-ebxkovztnlrphaahncircdyuwjgc/Build/Intermediates/MiniCalculator.build/Debug-iphoneos/PipeFitter.build/Objects-normal/armv7/RollingOffsetLeftViewController.o and /Users/Lucky3kj/Library/Developer/Xcode/DerivedData/MiniCalculator-ebxkovztnlrphaahncircdyuwjgc/Build/Intermediates/MiniCalculator.build/Debug-iphoneos/PipeFitter.build/Objects-normal/armv7/RollingOffsetAnyAngleViewController.o for architecture armv7
   Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1

Ответы [ 2 ]

2 голосов
/ 15 января 2012

По сути, это ошибка, которая возникает из-за C.

Если в одном файле .c у меня есть следующее:

void myFunction(int myArg)
{
    printf("%i", myArg);  
}

И в другом файле у меня есть эта функция:

void myFunction(int myArg)
{
     printf("MyArg is: %i", myArg);
}

Когда компилятор связывает ваш проект и вы вызываете

myFunction(10);

Компилятор не знает, какую версию вашего метода вызывать, поэтому решение является одним из следующих:

1) Определите метод один раз и включайте только прототип функции.Пример:

// instead of implementing myFunction here, we do this:
void myFunction(int myArg);
// and implement myFunction in another file.

-(void) viewDidLoad {
    myFunction(10);
}

2) Определите метод дважды, но добавьте к нему статический классификатор, который сообщает компоновщику, что это единственный файл, который может использовать эту функцию.

// FileOne.c

static void myFunction(int myArg)
{
    printf("myArg is: %i", myArg);
}

// FileTwo.c

static void myFunction(int myArg)
{
    printf("%i", myArg);
}

Честно говоря, для простоты я бы порекомендовал просто использовать статический классификатор, но это только мои предпочтения, когда дело доходит до этих вопросов.

0 голосов
/ 15 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...