2010-02-06 11 views
5

Ich habe seltsames Verhalten von Objective-C++ erlebt. Ich habe eine Objective-C++ - Klasse und ruft eine klassische C-Funktion in einem Methodenkörper auf. Aber Linker kann die C-Funktion nicht finden.Ist es verboten, die klassische C-Funktion aus dem Objective-C++ - Klassenmethoden-Body aufzurufen?

beschrieben ich das Problem hier: Xcode print symbol not found for my C function which used in Objective-C method body

ich das Problem, indem Objective-C++ Klasse in Objective-C-Klasse gelöst, aber die Frage blieb noch. Verbietet es den Aufruf der C-Funktion in der Objective-C++ - Klasse?

Antwort

10

Sie müssen sicherstellen, dass die C-Funktionen

extern "C" 

in der entsprechenden .h-Datei deklariert sind.

Der gemeinsame Weg, dies zu tun, ist:

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

Es funktioniert! Vielen Dank. – Eonil

+1

Whooa, fantastisch, das hat meinen Tag gerettet – speeder

Verwandte Themen