バックグラウンド
私はLSGetApplicationForURL
API を使用しようとしていますが、ここで非常に役立つ例を見つけました - 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
そのため、他のヘッダー ファイルを含めたり、触れたりしていません。ただし、明らかに、最終的にこのエラーにつながるいくつかの依存関係があるようです。
私が試した/調査したことのいくつか:
- Carbon Core が 10.8 (私が使用しているバージョン) で非推奨になっていることがわかりました- https://developer.apple.com/library/mac/#releasenotes/General/CarbonCoreDeprecations/
その結果、
MacTypes.h
Carbon Coreフレームワークはかなり貧弱で、条件付きMacTypes.h
で /usr/include/ から含まれていました - 上記の「非推奨」ページの情報に従って、(Carbon Core フレームワークで) および MachineExceptions.h を編集
MacTypes.h
して、/usr/include から MacTypes を含めようとしました。 - ヘッダー ファイルをインクルードする順序を変更しました (私がこれを調査している間、他の人のために働いていました)。
- Makefile に CoreFoundation および ApplicationServices フレームワークを含めています (「-framework」オプションを使用)。
この問題を解決するために何時間も費やしてきたので、この問題に関するフィードバックは大歓迎です。ここにあるものが基本的/基本的なものである場合は、事前にお詫び申し上げます。私は Mac OS プログラミングに非常に慣れておらず、フレームワークがどのように配線されているか、またそれらを使用する方法を理解しようとしています。
ありがとう!