QuickTime for Windows SDK はここからダウンロードできます(要 ADC = Apple Developer Connection 登録)。右の Downloads and Tools をクリックすると ADC のアカウントを聞かれ、その先にダウンロードリンクがあります。

リンクの説明文には、”All APIs in this SDK are deprecated and should not be used for new development.” と書いてあります。もっとも、Mac の方でも QuickTime X が出た時点(だいぶ前)で QuickTime 7 は deprecated のはずなので、これ自体は特に新しい情報ではありません。
QuickTime for Windows SDK のダウンロードリンクの説明

zip を展開するとインストーラ exe が出てきてそれを実行すると C:\Program Files (x86)\QuickTime SDK にファイルが展開されます…が、スタートアップグループ項目どころか EULA や README すらありません。アンインストール項目はあるのに。Apple としてはいつものことのような気がしますが、この時点でだいぶやる気を削がれます。
QuickTime for Windows SDK  には README が無い

ともあれ、試しに Ut Video Codec Suite の utv_qt 以下をコンパイルしてみるのですが、ヘッダファイル内でエラーが出ます。切り分けのために以下のようなソースファイルを作ります。

#include <Carbon.h>

ホントにこれだけ。エラーの起きようがありません。

これを Visual C++ 2005 SP1 でコンパイルすると…

E:\vsproj\utvideo\utv_qt>cl /I"C:\Program Files (x86)\QuickTime SDK\CIncludes" a.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

a.c
C:\Program Files (x86)\QuickTime SDK\CIncludes\ConditionalMacros.h(1662) : warning C4005: 'TARGET_API_MAC_CARBON' : マクロが再定義されました。
        C:\Program Files (x86)\QuickTime SDK\CIncludes\CoreServices.h(25) : 'TARGET_API_MAC_CARBON' の前の定義を確認してください
C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(145) : error C2365: 'kATSULineWidthTag' : 再定義; 以前の定義は '列挙子' でした。
        C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(145) : 'kATSULineWidthTag' の宣言を確認してください。
C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(145) : error C2086: 'kATSULineWidthTag' : 再定義されました。
        C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(145) : 'kATSULineWidthTag' の宣言を確認してください。
C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(147) : error C2365: 'kATSULineRotationTag' : 再定義; 以前の定義は '列挙子' でした。
        C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(147) : 'kATSULineRotationTag' の宣言を確認してください。
C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(147) : error C2086: 'kATSULineRotationTag' : 再定義されました。
        C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(147) : 'kATSULineRotationTag' の宣言を確認してください。
(略)
C:\Program Files (x86)\QuickTime SDK\CIncludes\ATSUnicode.h(249) : fatal error C1003: プログラム内のエラーが 100 個を超えました。コンパイルは中断されます。

(゜Д゜)ハァ?

ちなみに、a.c を

#define TARGET_API_MAC_CARBON 0
#include <Carbon.h>

にすると TARGET_API_MAC_CARBON が再定義云々とは言われないし、ConditionalMacros.h の 1037 行目を

#define PRAGMA_ONCE 1

にすると列挙子云々とは言われなくなりますが、今度は全く別のエラーが出ます。万事この調子。

これではやる気以前の問題です。論外。


きわめて奇妙なことに、これの対策方法をググっても見つかり(見つけられ)ません。というか、同じ問題にハマってる人が見つかりません。こういう場合、もちろん問題はこちら側にあると考えるのが妥当ですが、ググっても見つからないのではどうにもなりません。

Trackback

only 1 comment untill now

  1. QuickTime for Windows コンポーネントの書き方

    以前、SDK バグってんじゃねーの、と書きましたが。 オープンソースで QuickTime for Windows にも対応しているコンポーネントのソース(たとえば XiphQT)を読むと、どうやら <Carbon.h> や <Qu…

Add your comment now