2

我有这行代码:

GetVolParmsInfoBuffer volumeParms;
HParamBlockRec pb;

我包括了这个标题:

#include </System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/Files.h>

但是编译器仍然会抛出HParamBlockRec未知类型的错误。

在另一个具有相同文件的项目中,一切正常,即使不包括Files.h标题。
有什么我想念的吗?

更新 我能够通过将架构设置为 32 位来修复错误。

但现在我收到了这个构建错误:

error: -fobjc-arc is not supported with fragile abi

我搜索了一下,有人说切换到 LLVM GGC 4.2 编译器会有所帮助,但事实并非如此。

现在我的构建设置是:

  • 32 位英特尔
  • Mac OSX 10.7 SDK
  • 仅构建活动架构
  • Mach-O 类型设置为动态库

我对 XCode 中的编码非常不熟悉。所以,如果你能在这里帮助我,那就太好了。

4

2 回答 2

4

不幸的是,ARC 在 32 位 OS X 上根本不可用。显然 Apple 已经决定现在所有新的开发都应该转移到 x86-64,所以所有新的 Objective-C 2.0 特性——不仅仅是 ARC,而是此外-fobjc-nonfragile-abi容器字面量、对象下标、属性的默认合成……仅针对 64 位 OS X(当然也适用于 32 位 iOS)实现。

因此,如果您尝试为 32 位和 64 位版本的 OS X 生成包含代码的胖二进制文件,您将不得不将自己限制在 Objective-C 1.0 功能和/或使用#ifdefs 破解您的代码库. 这不公平,但这是真的。对不起。

于 2012-08-21T19:53:32.080 回答
2

您不应包含框架中的单个标头。改用伞头:

#include <Carbon/Carbon.h>

此外,根据文档 HParamBlockRec在 64 位中不可用。您将需要找到一个现代替代您正在使用的基于参数块的功能。

至于-fobjc-arc警告,请确保将Objective-C 自动引用计数( $CLANG_ENABLE_OBJC_ARC) 构建设置设置为( NO)。

于 2012-07-05T08:23:55.447 回答