2010-02-06 14 views
5

He experimentado un comportamiento extraño de Objective-C++. Tengo una clase Objective-C++, y llama a una función C clásica en un cuerpo de método. Pero el vinculador no puede encontrar la función C.¿Se prohíbe llamar a la función C clásica desde el cuerpo del método de clase Objective-C++?

que describe el problema aquí: Xcode print symbol not found for my C function which used in Objective-C method body

He resuelto el problema cambiando la clase de Objective-C++ para la clase de Objective-C, pero la cuestión es todavía permanecían. ¿Prohíbe llamar a la función C en la clase Objective-C++?

Respuesta

10

Usted necesita asegurarse de que las funciones de C se declaran

extern "C" 

en el archivo .h apropiado.

La forma más común de hacer esto es:

// 
// 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

Funciona! Gracias. – Eonil

+1

Whooa, increíble, esto me salvó el día – speeder

Cuestiones relacionadas