Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does it prohibited calling classic C function from Objective-C++ class method body?

I have experienced some strange behavior of Objective-C++. I have an Objective-C++ class, and it calls a classic C function in a method body. But linker cannot find the C function.

I described the problem here: Xcode print symbol not found for my C function which used in Objective-C method body

I solved the problem by changing Objective-C++ class to Objective-C class, but the question is still remained. Does it prohibited calling C function in Objective-C++ class?

like image 763
eonil Avatar asked Feb 06 '10 15:02

eonil


1 Answers

You need to make sure that the C functions are declared

extern "C"

in the appropriate .h file.

The common way of doing this is:

//
// 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
like image 118
Paul R Avatar answered Sep 28 '22 03:09

Paul R