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

我已经将iOS SDK升级到新发布的4.1,现在我在构build我的应用时出现以下错误:

/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应用程序编译。

任何想法我能做什么?

提前致谢!

Stelian

这是iOS 4.1 SDK和iPhone模拟器使用LLVM构build的已知错误。 你可以在苹果的开发者论坛的这个主题中阅读所有关于它的内容。

build议的解决scheme是将以下内容添加到项目的构build设置中的Other C Flags-D__IPHONE_OS_VERSION_MIN_REQUIRED=040100其中将040100replace为您的部署目标版本(例如,对于3.0为3.00000)。

使用LLVM编译器时遇到此问题。 尝试使用GCC重新编译和问题(对我来说)消失。

我会继续调查,以确定它是一个普遍的工具链问题,或者如果它是特定于我的configuration。

–update:

所以它看起来像CLANG的问题。 LLVM GCC 4.2正常工作。

我仍然认为这可能是我的configuration问题。 即使是一个空的项目也不能在LLVM CLANG 1.5下编译。

– 更新2:

所以看起来,在项目信息设置中,所要求的最低版本设置没有被遵守。 我已经手动设置它通过:

其他C标志:-D__IPHONE_OS_VERSION_MIN_REQUIRED = 031300

(对于最低限度的iOS 3.1,显然 – 如果你需要更新的版本,那么你可以使用040100版本4.0)

它似乎只是CLANG / LLVM模拟器的问题。 直接编译设备似乎工作得很好。

也许你应该用最新的Xcode 4来构build,这是一个需求吗? MAC_10_7将在编译器附带的系统头文件中定义,我猜可能在SDK中,但是我想不是。 我猜这是你为模拟器build立的时候。