● コラム・謎は謎を呼ぶ その2(2000/09/11)

  〜 これからどうなるのかが問題だ 〜

  このコラムは、Macintosh開発環境に日々チャレンジするプログラマーの
  血と汗と涙と鼻水の物語です。オイ、私はいったいどうすればよいのだ?


9月11日現在、AppleのADCメンバーはメンバーサイトから「Universal Interfaces 3.4a1」をダウンロードすることができます。その前のバージョンはv3.4d8でしたから、やっとこさαバージョンに昇進したわけです(笑)で、さっそくダウンロードして、Metrowerks CodeWarrior用のPreCompiled Headerである「CarbonHeadersPCH」を再構築してみました。ここまでは、まったく問題ありません。「やれ一安心」と、今度は再構築したCarbonHeadersPCHを使って、CarbonLib v1.1対応の実験プロジェクトをコンパイル&リンクしてみました。すると、何故だか前には出なかった以下のようなエラーが表示されます。



「なんだこりゃ?」と内容を調べてみると、NewMovieController() などのPrototype宣言がなされていなのが原因のよです。「変だなぁ、QuickTime関連のヘッダーファイルを定義し忘れかしら?」と、エラー対象のソースファイルの先頭に#include "Movies.h"を追加してみても、やはりエラーが無くなりません。こうなると、原因はMovies.h自身にあると考えるのが妥当です。「α版でバグを作ってくれちゃったかな?」程度の軽い気持ちで、Movies.hを調べてみると、そこには驚愕の新事実が隠されていました(笑)。なんとNewMovieController() を含むMovies.hに定義されているほとんどのAPIが

#if CALL_NOT_IN_CARBON

の洗礼を受けているのです(涙)。そして、実際のAPI定義の上部には、以下のようなコメント文が追加記述されています。



Cabon環境が「not available」で、Mac OS X環境が「available」ってどういうことなのでしょうか?CFM環境の「CarbonMultimedia v1.0」って何なんでしょうか?そう言えば5月のWWDCでもらってきた、Mac OS X DP4のSDKの中には、似たような名前のStub Libraryがあった記憶があります。しかし現在のCarbon v1.1 SDKには、その姿が見あたりません。これはどうしたことかと、付属の関係ドキュメントを読んでみても、その答えを見つけることはできません。

実に変な話しです。Movies.hで定義されているAPIを用いたアプリケーションがMac OS 9上で開発できなければ、Mac OS XでそのAPIが使えても意味ありません。(Mac OS X上で開発できるようになれば別ですが...)また、単一アプリケーションが、Mac OS 8/9とMac OS Xのどちらでも起動できるというCarbonの思想から大きく外れてしまいます。

まあ、良い方の未来を推測するとすれば、PPCのCarbon環境でもCarbonMultimediaやCarbonMultimedia.hというLibraryやUniversal Interfaces提供されて、Movies.hのAPIを使う場合には、そちらをリンクするように変更されるということではないでしょうか?にしても、このままMacOS 8.6/9.0のCarbon環境で、Movies.hで定義差れたAPIが利用できなくなることだけは避けてほしいものです。と言うより、Mac OS 8/9とMac OS Xのどちらでも起動できるアプリケーションを作成するためには、これは致命的な問題になってしまいます(涙)。まあ、所詮α版だと思えば、少しは気が休まりますが...。

というわけで、これに関する真実をご存じの方はぜひご連絡ください。アップルの方でも結構です(誰と無く...)待ってます。

● この謎はみごとに解決されました、さ〜「コラム・謎は謎を呼ぶ その3」を読みましょう(笑)

copyright 2000 Ottimo, Inc. All rights reserved
無断転載・引用禁止
Contact Us: koike@ottimo.co.jp