2010-02-06 14 views
5

Ho riscontrato alcuni strani comportamenti di Objective-C++. Ho una classe Objective-C++ e chiama una classica funzione C in un corpo del metodo. Ma il linker non riesce a trovare la funzione C.È proibito chiamare la funzione C classica dal corpo del metodo di classe Objective-C++?

ho descritto il problema qui: Xcode print symbol not found for my C function which used in Objective-C method body

ho risolto il problema cambiando classe Objective-C++ per classe Objective-C, ma la questione è ancora rimasto. È proibito chiamare la funzione C nella classe Objective-C++?

risposta

10

È necessario fare in modo che le funzioni C sono dichiarate

extern "C" 

nel file .h appropriata.

Il modo comune di fare questo è:

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

Funziona! Grazie. – Eonil

+1

Whooa, fantastico, questo mi ha salvato la giornata – speeder

Problemi correlati