2010-02-06 11 views
5

Bazı Objective-C++ tuhaf davranışları yaşadım. Bir Objective-C++ sınıfına sahibim ve bir yöntem gövdesinde klasik bir C işlevi çağırıyor. Ancak, bağlayıcı C işlevini bulamıyor. Xcode print symbol not found for my C function which used in Objective-C method bodyKlasik C işlevinin Objective-C++ sınıf yöntemi gövdesinden çağrılması yasaklanmış mı?

Ben Objective-C sınıfına Objective-C++ sınıfı değiştirerek sorunu çözüldü, ama soru hala kalmıştır edilir:

Burada sorunu tanımladı. Objective-C++ sınıfında C işlevini çağırmayı yasaklıyor mu?

cevap

10

Sen C fonksiyonları uygun .h dosyasında

extern "C" 

ilan emin olmak gerekir.

bunu yapmanın yaygın yolu şudur:

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

Çalışıyor! Teşekkürler. – Eonil

+1

Whooa, harika, bu benim günümü kurtardı – speeder

İlgili konular