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ビットIntel
  • Mac OSX 10.7 SDK
  • アクティブなアーキテクチャのみを構築するはい
  • Mach-Oタイプがダイナミックライブラリに設定されている

私はXCodeでのコーディングに非常に不慣れです。ですから、ここで私を助けていただければ幸いです。

4

2 に答える 2

4

残念ながら、ARC は 32 ビット OS X では利用できません。どうやら Apple は、すべての新しい開発を x86-64 に移行する必要があると判断したようです。また-fobjc-nonfragile-abiコンテナ リテラル、オブジェクトの添え字付け、プロパティのデフォルトの合成... — は 64 ビット OS X (もちろん 32 ビット iOS) に対してのみ実装されます。

そのため、OS X の 32 ビット バージョンと 64 ビット バージョンの両方のコードを含むファット バイナリを作成しようとしている場合は、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 に答える