C ++ не компилируется (ссылка?) В XCode 4.2 - PullRequest
1 голос
/ 16 ноября 2011

У меня очень маленькая программа в XCode, отображающая только метку и изменяющая текст метки в методе viewWillAppear.Label.text должен поступать из библиотеки C ++ с такой функцией:

int getNumber(){
    return 42;
}

Проблема в том, что включение класса с # import "TestLibMain.h" в мой *.mm (!) и использование функции с

TestLibMain *tlb = new TestLibMain();
int myInt = tlb->getNumber();
NSString *myString = [NSString stringWithFormat:@"%d",myInt];

не вызывает ошибку компилятора, но вызывает ошибку компоновщика:

неопределенные символы для архитектуры i386: "TestLibMain :: getNumber() ", ссылка из: - [tbViewController buttonPressed:] в tbViewController.o ld: символ (ы) не найден для архитектуры i386 clang: ошибка: команда компоновщика не выполнена с кодом выхода 1 (используйте -v для просмотра вызова)

У меня сложилось впечатление, что класс cpp не был скомпилирован.

Я много чего перепробовал, но где-то зависает.Это все в одном каталоге, я использую расширение .mm, все хорошо, но всегда эта ошибка компоновщика.Схожу с ума: -)

Mac OS X Lion, XCode 4.2

Есть идеи?

1 Ответ

5 голосов
/ 16 ноября 2011
int getNumber() {
    return 42;
}

в .cpp или .mm определяет getNumber() как свободную функцию.Это:

int TestLibMain::getNumber() {
    return 42;
}

определяет getNumber() как член TestLibMain.

...