2010-02-06 25 views
5

Tôi đã trải qua một số hành vi kỳ lạ của Objective-C++. Tôi có một lớp Objective-C++, và nó gọi một hàm C cổ điển trong một thân phương thức. Nhưng mối liên kết không thể tìm thấy hàm C.Liệu có bị cấm gọi hàm C cổ điển từ cơ thể phương thức lớp Objective-C++ không?

tôi đã mô tả các vấn đề ở đây: Xcode print symbol not found for my C function which used in Objective-C method body

tôi giải quyết vấn đề bằng cách thay đổi ++ đẳng cấp C Mục tiêu đến lớp Objective-C, nhưng câu hỏi vẫn còn tồn tại. Nó có bị cấm gọi hàm C trong lớp Objective-C++ không?

Trả lời

10

Bạn cần phải chắc chắn rằng các chức năng C được khai báo

extern "C" 

trong file .h thích hợp.

Cách phổ biến để làm điều này là:

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

Nó hoạt động! Cảm ơn. – Eonil

+1

Whooa, tuyệt vời, điều này đã cứu ngày của tôi – speeder

Các vấn đề liên quan