次に準備するものはC言語用のヘッダーファイルです。Carbon 1.0.4 SDKの「Carbon Support」フォルダ内の「Universal Interfaces」フォルダ内に、リンク時に用いるすべてのヘッダーファイルがあります。このうち「CIncludes」フォルダ(C言語用)の中身をすべてMetrowerks CodeWarriorの以下のフォルダに入れて差し替えます。
MacOS Support/Universal/Interfaces/CIncludes
Carbon 1.0.4 SDKに添付されているヘッダーのバージョンは、なぜだかv3.3.1です。しかし、最新のバージョンはv3.3.2となっていますので、AppleのSDKサイト(http://developer.apple.com/sdk/)から「Universal Interfaces 3.3.2 」を入手して、そちらを利用した方が良いでしょう。ADCメンバーサイトからは「Universal Interfaces3.4d5」というバージョンもダウンロードできますが、こちらは開発途中のCarbonLib v1.1用ですので、現状では使わないでください。(まだ色々と不都合があるみたい...)現在のプロジェクトで古いバージョンのヘッダーファイルを利用していると、新しいヘッダーへの書き換えにより整合性がくずれてエラーが出る場合があります。プロジェクトに対してかなり古いヘッダーファイルを利用している場合には、最新の物へ更新する作業には細心の注意が必要となります。心して掛かりましょう!
さて、ヘッダーファイルをCarbon APIコンパチブルとして利用するには、ソースの先頭に...
#define TARGET_API_MAC_CARBON 1
というコンディショナル・マクロを定義して、このプロジェクトがCarbon API対応であることをコンパイラに指示します。例えば、ソースファイルをひとつしか利用していないプロジェクトでしたら、ソースの先頭に上記の定義を記述しておけばOKです。(図1 )もっと良い方法は、CarbonPrefix.hという上記定義のみを記載したヘッダーファイルを作り(図2)これをCodeWarriorのIDEのSettingsダイアログの「C/C++ Language」のパネルで「Prefix File」として定義しておきます。(図3)Apple社が提供しているCarbon化「SimpleText」のサンプルプロジェクトなどでは、この方法が取られています。

(図1)ソースコードの最初に記載する

(図2)Prefix Fileに記載する

(図3)Prefix Fileを設定する
ところが、私などが開発している大規模プロジェクトでは、大量のヘッダーファイルをソースコードの先頭に記載するのを避けるために(コンパイルのスピードを上げるために)Metrowerks社が標準添付している「MacHeadersPPC」というPrefix Fileを利用しています。ですから、そうした場合には、このMacHeadersPPCファイル自身をCarbon対応としてプリコンパイルしておく必要があるわけです。このMacHeadersファイルは、Metrowerks CodeWarriorの以下のフォルダ内にある「MacHeaders.mcp」というプロジェクトをMakeして作成することができます。
MacOS Support/MacHeaders
プロジェクトをMakeすると、68K用やPPC用またはC++用など、ターゲット種類別に6つのMacHeadersファイルが作成されます。その内容は「MacHeaders.c」というファイルに記載されています。このソースコードで、でコメントで囲われていないヘッダーファイル(例えば#include <Drag.h>など)のみがプリコンパイルされるわけです。もし新たにプリコンパイルしたいヘッダーファイルを追加したい時には、MacHeaders.cを書き直せば、自分の好みのMacHeadersファイルに作り直すことができるます。
Carbon用のMacHeadersを作成する場合には、MacHeaders.cの先頭に、Carbon対応のコンディショナル・マクロを定義してMakeし直せばOKです。(図4)ただし、このままMakeしてしまうと、以前のMacHeadersファイルを上書きしてしまいますので、とりあえず前のファイルは別フォルダに待避しておき、出来上がった新しいCarbon対応のMacHeadersファイルの方を「MacHeadersCarbon」等に名称変更して利用するのが最善です。多分、次回のMac OS X対応のMetrowerks CodeWarriorのバージョンには、Carbon対応のMacHeaders(Prefix File)が添付されると思いますが、それまではこうした自作MacHeadersで急場しのぐことにします。

(図4)MacHeaders.cを書き換える
最後は、Carbon用のリソースの話です。実はMac OS 8や9用のCarbonアプリケーションには特別なリソースは必要ありません。Carbon化されたアプリケーションをMac OS Xで起動する場合にのみ、リソースタイプ='carb'、ID=0のリソースをアプリに付加しておく必要があります。(図5)現状のMac OS Xでは、このリソースを添付しないと、CarbonアプリケーションでもClassic環境で起動してしまいます。ただ、この仕様が最後まで残るか(Appleにより残されるか)どうかは何とも言えないと思います。

(図5)ID=0の'carb'リソースを付加する
次回は、古いソースコード(プロジェクト)をCarbon化する時の要点を簡単にまとめてみたいと思います。
copyright 2000 Ottimo, Inc. All rights reserved
無断転載・引用禁止
Contact Us: koike@ottimo.co.jp