我的问题有点复杂:
库: 我有一个用C和C ++编写的库。它使用Apple LLVM在XCode中完美编译。 这个库本身的工作是由C代码完成的,而C ++部分只是一个C ++接口,因为我更喜欢C ++。从理论上讲,我只需要使用C ++来与它进行交流。
应用程序: 我在Objective-C中有一个使用上面的库的应用程序。当然,由于与我的库的通信是通过C ++完成的,我需要一个.mm文件才能从“Objective-C ++”调用我的库。
在编译期间......发布了几个“C”语言:
只有Objective-C ++
才会发生如果我为库的测试制作另一个C ++应用程序,那就没关系
详细信息:我一直在使用Apple LLVM编译器
问题: 如何从Objective-C ++代码编译C ++中的C代码?为什么它与从常规C ++代码编译不同?
答案 0 :(得分:2)
别忘了做
#ifdef __cplusplus
extern "C" {
#endif
<Some C method declaration>
#ifdef __cplusplus
}
#endif
在包含C方法声明的头文件中。
答案 1 :(得分:0)
经过长时间的尝试和Google,我终于明白了。 在我调用C头之前,我应该取消定义MAX和MIN宏。由于某种原因,他们之前已定义。编译器不会精确显示错误。这就是为什么这很困难。我正在使用的C框架有它自己的MAX和MIN宏的声明......
另一个可能对其他人有用的非常有趣的事情是,在我们需要做同样的事情之前:如果我们使用一些C框架实现它自己的max和min,则取消定义max和min(小写)。
它解决了这两个问题。