2010-02-06 1 views
5

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

Я описал проблему здесь: Xcode print symbol not found for my C function which used in Objective-C method body

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

ответ

10

Вы должны убедиться, что функции 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 
+1

Это работает! Благодарю. – Eonil

+1

Whooa, awesome, это спасло мой день – speeder

Смежные вопросы