是否禁止从Objective-C ++类方法体中调用经典C函数?

时间:2010-02-06 15:59:55

标签: c function linker objective-c++

我经历过Objective-C ++的一些奇怪行为。 我有一个Objective-C ++类,它在方法体中调用经典的C函数。 但是链接器找不到C函数。

我在这里描述了这个问题: Xcode print symbol not found for my C function which used in Objective-C method body

我通过将Objective-C ++类更改为Objective-C类来解决问题,但问题仍然存在。是否禁止在Objective-C ++类中调用C函数?

1 个答案:

答案 0 :(得分:10)

您需要确保声明C函数

extern "C"

在相应的.h文件中。

这样做的常见方法是:

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