collect2: ld вернул 1 ошибку состояния выхода в Xcode - PullRequest
0 голосов
/ 15 января 2011

Я получаю ошибку

Command /Developer/usr/bin/gcc-4.2 failed with exit code 1

и при открытии полного журнала ошибка более точно отображается как:

collect2: ld returned 1 exit status

из этого простого сценария Cocoa:

#import "Controller.h"

@implementation Controller

int skillcheck (int level, int modifer, int difficulty)
{
    if (level + modifer >= difficulty)
    {
        return 1;
    }
    if (level + modifer <= difficulty)
    {
        return 0;
    }

}

int main ()
{
    skillcheck(10, 2, 10);
}

@end

.h файл такой:

//
//  Controller.h
//
//  Created by Duo Oratar on 15/01/2011.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Cocoa/Cocoa.h>

@interface Controller : NSObject 
{
    int skillcheck;
    int contestcheck;
}

@end

и не указана строка, из которой произошла ошибка, кто-нибудь знает, каков источник этой ошибки и, что более важно, как ее исправить?

EDIT:

Я удалил класс, так что теперь у меня есть это:

//
//  Controller.m
//
//  Created by Duo Oratar on 15/01/2011.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "Controller.h"

int skillcheck (int level, int modifer, int difficulty)
{
    if (level + modifer >= difficulty)
    {
        return 1;
    }
    if (level + modifer <= difficulty)
    {
        return 0;
    }

}

int main ()
{
    skillcheck(10, 2, 10);
}

и для файла .h:

//
//  Controller.h
//
//  Created by Duo Oratar on 15/01/2011.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Cocoa/Cocoa.h>

и журнал говорит: (спасибо парню, который сказал, как его открыть)

Ld build / Debug / Calculator.app / Содержание / MacOS / Калькулятор обычный x86_64 cd / Пользователи / Дети / Рабочий стол / Калькулятор setenv MACOSX_DEPLOYMENT_TARGET 10.6 /Developer/usr/bin/gcc-4.2 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk -L / Пользователи / дети / Рабочий стол / Калькулятор / сборка / Отладка -F / Пользователи / дети / Рабочий стол / Калькулятор / build / Debug -filelist /Users/kids/Desktop/Calculator/build/Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/Calculator.LinkFileList -mmacosx-version-min = 10,6 -фрейм-работа Какао -o / Users /kids/Desktop/Calculator/build/Debug/Calculator.app/Contents/MacOS/Calculator

ld: дубликат символа _main в /Users/kids/Desktop/Calculator/build/Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/Controller.o и / Users / kids / Desktop / Calculator / build /Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/main.o collect2: ld вернул 1 статус выхода Сбой команды /Developer/usr/bin/gcc-4.2 с кодом выхода 1

ld: дубликат символа _main в /Users/kids/Desktop/Calculator/build/Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/Controller.o и / Users / kids / Desktop / Calculator / build /Calculator.build/Debug/Calculator.build/Objects-normal/x86_64/main.o

Команда /Developer/usr/bin/gcc-4.2 завершилась неудачно с кодом выхода 1

Ответы [ 2 ]

0 голосов
/ 16 января 2011

Если вы хотите объявить skillcheck (что не требуется в вашем случае), то это:

int skillcheck (int level, int modifer, int difficulty);

, а не просто:

int skillcheck;

которая будет определять переменную int , а не функцию, возвращающую ее.То же самое верно для testcheck .

Я предлагаю вам сначала прочитать немного больше о Objective-C, чтобы получить основы языка.

Обновление:

Также кажется, что у вас есть два определения main () , одно в Controller.m и одно main.m.Вы можете иметь только один.

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

Не совсем понятно, что вы пытаетесь сделать.В этом примере вообще не нужен класс Objective-C;это просто функция main (), вызывающая функцию C, и Objective-C вообще не задействован.

Исходя из языка вашего вопроса и способа написания кода, я думаю,новичок в программировании Какао.Возможно, вы захотите (пере) прочитать это .

. Компилятор / компоновщик должен получить дополнительную информацию.Убедитесь, что в окне сборки выбрано «все сообщения».

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