タイトルCarbonアプリケーションなのにClassicで動くことがある?カテゴリーCarbon/CF
作成日2000/10/18 14:34:11作成者新居雅行
以前、MDOnlineの前文で、Carbon対応なのにMac OS XでClassicアプリケーションとして起動し、Classic環境が起動した上で実行される場合があることを報告し、原因について御存じの方を問い合わせた。実はさっそく、オッティモの小池邦人さんより御連絡をいただいた(もちろん、MDOnlineで【小池邦人のプログラミング日記】を連載中の小池さんである)。「単純にID=0の‘carb’リソースが付いていないだけじゃないかと思うのですが、どんなもんでしょうか?」 結論を先に言えばその通りであった(ありがとうございます、この場を借りてお礼を申し上げます)。どうやら、Mac OS Xではこのリソースの有無をもとに、Carbon対応アプリケーションかどうかを判別しているのではないかと思われる。Carbon対応なのにClassicとして起動するアプリケーションがたまたま見つかったので、そのアプリケーションに上記のリソースを強引に追加してみた。すると、ClassicではなくCarbonアプリケーションとしてMac OS X上で稼動した。もっとも、そのアプリケーションは、稼動しているOSのバージョンをチェックして古いバージョンであると報告をして終了してしまうだけであった。もしかして、1.0とか0.xのようにバージョンを認識しているのかもしれない。いずれにしても、筆者の側での確認が遅れてこの時期に配信となったことはおわびしたい。
このことを知った上で、CarbonLib SDK 1.0.4に含まれているドキュメントのCarbon Porting Guideを参照したところ、きちんとcarbリソースがないとMac OS X上でもClassic環境で起動する旨が書かれていた。ただ、この文書では中身は4バイトの0を含むとしてあるが、carbリソースは単に存在してればいいだけで、特に中身はどうでもいいようである。
CodeWarrior 6のテンプレートなどでは最初からcarbリソースを作成するように、リソース定義ファイルが組み込まれている。これからCarbon化を行うという場合には、いったんCodeWarriorのひな形を作成して、そこにソースや追加のライブラリを登録するようにした方が、何かと問題は少ないのではないかと考えられる。
関連リンク