我有这行代码:
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编译器会有所帮助,但事实并非如此。
现在我的构建设置是:
我对XCode中的编码非常不熟悉。如果你能帮助我,那就太好了。
答案 0 :(得分:4)
不幸的是,ARC在32位OS X上根本不可用。显然Apple已经决定所有新的开发应该已经转移到x86-64,所以所有新的Objective-C 2.0都是新功能 - 而不仅仅是ARC,以及-fobjc-nonfragile-abi
,container literals,对象下标,default synthesis of properties ... - 仅针对64位OS X(当然还适用于32位iOS)实现。
因此,如果您正在尝试为32位和64位版本的OS X生成包含代码的胖二进制文件,则必须限制自己使用Objective-C 1.0功能和/或修改代码库用#ifdefs。这不公平,但确实如此。遗憾。
答案 1 :(得分:2)
您不应该在框架中包含单个标头。请改用伞头:
#include <Carbon/Carbon.h>
此外,每the documentation HParamBlockRec
在64位中不可用。您将需要找到您正在使用的基于参数块的函数的现代替代品。
对于-fobjc-arc
警告,请确保将 Objective-C自动引用计数($CLANG_ENABLE_OBJC_ARC
)构建设置设置为否 (NO
)。