升级到iOS 4.1 SDK后出现奇怪的问题

时间:2010-09-09 15:08:05

标签: iphone ios

我已将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

3 个答案:

答案 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中,但我认为不是。我猜这是你为模拟器构建的。