5

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?

Community
  • 1
  • 1
eonil
  • 83,476
  • 81
  • 317
  • 516

1 Answers1

10

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
Paul R
  • 208,748
  • 37
  • 389
  • 560