0

バックグラウンド

私はLSGetApplicationForURLAPI を使用しようとしていますが、ここで非常に役立つ例を見つけました - How to get default mail client version on mac os x?

ただし、コードをコンパイルしようとすると、次のエラーが発生します。

/System/Library/Frameworks/CoreServices.framework/Frameworks/CarbonCore.framework/Headers/MachineExceptions.h:53: エラー: 宣言は何も宣言していません

53 行目あたりで MachineExceptions を開くと、ここで の宣言がいくつか見られます。unsignedwideこれは、 で定義されている型ですMacTypes.h。これが Carbon Core フレームワークの一部であることがわかりました。

手始めに、コードには最上位のヘッダーのみを含めています (実際には、上記の例にあるサンプル コードをそのまま使用しています)。MachineException.hそのため、他のヘッダー ファイルを含めたり、触れたりしていません。ただし、明らかに、最終的にこのエラーにつながるいくつかの依存関係があるようです。

私が試した/調査したことのいくつか:

  1. Carbon Core が 10.8 (私が使用しているバージョン) で非推奨になっていることがわかりました- https://developer.apple.com/library/mac/#releasenotes/General/CarbonCoreDeprecations/ その結果、MacTypes.hCarbon Coreフレームワークはかなり貧弱で、条件付きMacTypes.hで /usr/include/ から含まれていました
  2. 上記の「非推奨」ページの情報に従って、(Carbon Core フレームワークで) および MachineExceptions.h を編集MacTypes.hして、/usr/include から MacTypes を含めようとしました。
  3. ヘッダー ファイルをインクルードする順序を変更しました (私がこれを調査している間、他の人のために働いていました)。
  4. Makefile に CoreFoundation および ApplicationServices フレームワークを含めています (「-framework」オプションを使用)。

この問題を解決するために何時間も費やしてきたので、この問題に関するフィードバックは大歓迎です。ここにあるものが基本的/基本的なものである場合は、事前にお詫び申し上げます。私は Mac OS プログラミングに非常に慣れておらず、フレームワークがどのように配線されているか、またそれらを使用する方法を理解しようとしています。

ありがとう!

4

1 に答える 1