我已将iOS SDK升级到新发布的4.1,现在我在构建应用时出现以下错误:
/DeveloperBeta/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFContext.h:60:23
/DeveloperBeta/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFContext.h:60:23: error: expected function body after function declarator
查看.h文件中的该行,我看到以下内容:
CG_EXTERN void CGPDFContextAddDocumentMetadata(CGContextRef context, CFDataRef metadata) CG_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_0);
真正有趣的是定义__MAC_10_7似乎没有在任何地方定义。我在预编译应用程序的.pch文件时遇到此错误。
奇怪的是,一个简单的hello world app会编译。
知道我该怎么办?
提前致谢!
Stelian
答案 0 :(得分:42)
这是iOS 4.1 SDK的一个已知错误,并使用LLVM为iPhone模拟器构建。您可以在Apple的开发者论坛上的this thread中阅读所有相关内容。
建议的解决方案是在项目的构建设置中将以下内容添加到Other C Flags
:-D__IPHONE_OS_VERSION_MIN_REQUIRED=040100
,其中将040100替换为部署目标版本(例如,030000 for 3.0)。
答案 1 :(得分:3)
使用LLVM编译器时遇到此问题。尝试使用GCC重新编译,问题(对我来说)就消失了。
我会继续调查,以确定它是否是一般工具链问题,或者是否特定于我的配置。
- 更新:
所以它看起来像CLANG的一个问题。 LLVM GCC 4.2工作正常。
我仍然认为我的配置可能存在问题。即使是一个空的项目也无法在LLVM CLANG 1.5下编译。
- 更新2:
所以似乎在项目信息设置中没有遵守最低要求的版本设置。我通过以下方式手动设置:
其他C标志:-D__IPHONE_OS_VERSION_MIN_REQUIRED = 031300
(至少iOS 3.1,显然 - 如果你需要更高版本,那么你可以使用040100版本4.0)
它似乎只是CLANG / LLVM的模拟器问题。直接编译设备似乎工作正常。
答案 2 :(得分:0)
也许你应该使用最新的Xcode 4构建,这是一个要求吗? MAC_10_7将在编译器附带的系统头中定义我猜可能在SDK中,但我认为不是。我猜这是你为模拟器构建的。