【问题标题】:Strange issue after upgrading to iOS 4.1 SDK升级到 iOS 4.1 SDK 后出现的奇怪问题
【发布时间】:2011-10-22 02:59:30
【问题描述】:

我已将 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 应用程序可以编译。

知道我能做什么吗?

提前致谢!

斯特利安

【问题讨论】:

  • 嗯。 API 更改文档对 Core Graphics 说“没有更改”。 MAC_10_7 不应该有所作为。我还没有在 Apple 论坛上看到任何内容,所以我会向 Apple 记录一个错误,看看他们怎么说。
  • 我有一个非常相似的问题。我从 4.0.2 sdk 升级到 iOS 4.1 sdk 后得到它。
  • 我有一个非常相似的问题。我从 4.0.2 sdk 升级到 iOS 4.1 sdk 后得到它。我对一个编译良好的项目有 11 个错误。 CG*.h 文件中发生错误。相同类型的错误,一些变量没有定义,如果我记得的话,IPHONE_有些东西无法解析。更多详细信息,请在我靠近 Mac 计算机时立即了解。有趣的是,如果我创建一个新项目并复制文件,它会构建,但运行应用程序,一些视图会丢失(继承 UIVIEW 和 UITABLEVIEW)

标签: iphone ios


【解决方案1】:

这是 iOS 4.1 SDK 和使用 LLVM 为 iPhone 模拟器构建的一个已知错误。您可以在 Apple 开发者论坛上的 this thread 中阅读所有相关信息。

推荐的解决方案是将以下内容添加到项目的构建设置中的Other C Flags:-D__IPHONE_OS_VERSION_MIN_REQUIRED=040100,您将在其中将 040100 替换为您的部署目标版本(例如 3.0 为 030000)。

【讨论】:

  • 使用例如 030100(对于 3.1)时出现错误,改为 30100 工作正常!
  • 更好的是,适当地设置项目的“iOS 部署目标”构建设置:IPHONEOS_DEPLOYMENT_TARGET = 4.1
【解决方案2】:

我在使用 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 的模拟器问题。直接为设备编译似乎工作得很好。

【讨论】:

  • 即使在“其他 C 标志”中设置了最低要求标志,我也无法让它适用于模拟器。 :(
【解决方案3】:

也许您应该使用最新的 Xcode 4 进行构建,这是必需的吗? MAC_10_7 将在编译器附带的系统头文件中定义,我猜可能在 SDK 中,但我认为不是。我猜这是你为模拟器构建的时候。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多