我有一个XCode项目( Objective-C ),我正在尝试添加我之前编码的 C ++ 库。只要我添加一个.cpp
或.mm
文件,构建过程就会随机出现,通常是在构建前缀标头时。当我包含.c
个文件时,会发生同样的事情。基本上,我只能在目标中使用.m
个文件。我得到的最后一个错误是:
SDKpath /公共/ CoreGraphics.framework /接头/ CGFont.h:53:
错误:在';'之前的预期构造函数,析构函数或类型转换令牌
该行的代码为:
CG_EXTERN CGFontGetGlyphsForUnichars(CGFontRef font, void* chars, CGGlyph* glyphs, int len)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);
我很确定代码不是导致该问题的原因,但我无法弄清楚我的构建设置有什么问题。 如果我摆脱了那个包含,那么构建过程将在它到达的第一个Objective-C代码上跳转。
这是我的前缀标题:
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <IOSurface/IOSurfaceAPI.h>
#import "CGColorUtil.h"
#endif
答案 0 :(得分:1)
CG_EXTERN void CGFontGetGlyphsForUnichars(CGFontRef font, void* chars, CGGlyph* glyphs, int len)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);
答案 1 :(得分:0)
您需要将编译目标设置为Objective-C ++或将文件扩展名更改为.mm的C / C ++代码文件。整个图书馆都是一样的。
我也很确定编译器总是定义OBJC宏,所以如果你不想包含那些代码,你需要找到一种不同的方法将它从编译器中隐藏起来。