当包含c++文件时,构建失败

objective c - Build fails when including C++ files

本文关键字:构建 失败 文件 包含 c++      更新时间:2023-10-16

我有一个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);

我很确定代码不是造成这个问题的原因,但我不知道我的构建设置出了什么问题。如果我去掉这个include,那么构建过程就会在它到达的第一个Objective-C代码上出错。

这是我的前缀头:

#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <CoreGraphics/CoreGraphics.h>
#import <IOSurface/IOSurfaceAPI.h>
#import "CGColorUtil.h"
#endif

我是个白痴。由于某种原因,函数中缺少返回类型。

CG_EXTERN void CGFontGetGlyphsForUnichars(CGFontRef font, void* chars, CGGlyph* glyphs, int len)
CG_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);

您需要将编译目标设置为objective - c++或将C/c++代码文件的文件扩展名更改为。mm。对于整个库也是如此。

我也很确定编译器总是定义OBJC宏,所以如果你不想包含该代码,你需要找到一个不同的方式来隐藏它从编译器