Запрещено ли вызывать классическую функцию C из тела метода класса Objective-C ++? - PullRequest
5 голосов
/ 06 февраля 2010

Я испытал какое-то странное поведение Objective-C ++. У меня есть класс Objective-C ++, и он вызывает классическую функцию C в теле метода. Но компоновщик не может найти функцию C.

Я описал проблему здесь: Символ печати XCode не найден для моей функции C, которая использовалась в теле метода Objective C

Я решил проблему, изменив класс Objective-C ++ на класс Objective-C, но вопрос все еще остается. Запрещено ли вызывать функцию C в классе Objective-C ++?

1 Ответ

10 голосов
/ 06 февраля 2010

Вы должны убедиться, что функции C объявлены

extern "C"

в соответствующем файле .h.

Обычный способ сделать это:

//
// foo.h
//

#ifndef __FOO_H__
#define __FOO_H__

#ifdef __cplusplus
extern "C" {
#endif

// ... your interface here - normal C function declarations etc ...

#ifdef __cplusplus
}
#endif

#endif
...