ソースからWindows D3D9をどのように構築しますか?
質問
Microsoftは、ソースコードを配布して、さまざまなDirect3D APIの実装をハードウェアベンダー、ドライバー開発者などに参照します。このコードは、常に暗号化されたWDK(以前のDDK)ビルドシステムを使用してビルドされ、事実上決して動作しませんボックス。広く使用されていますが、このコードはセミプライベートであるため、基本的な有用な情報がウェブ上で公開されることはありません。これは一般的には十分に使用され(そしてこのコミュニティの尻でよく知られている痛み)、そして基本的なビルド情報は十分に鈍感なので、Googleで発見できるはずです。
ビルドのreadmeでは、WDKを使用し、コマンド build -cz -daytona
でビルドすることを推奨しています。紛らわしいことに、これは大量の出力を吐き出しますが、何も構築しません。
これを超えて、VDK 6001.18002を搭載したVistaでは、最新のd3def9ソース配布が link
サブプロジェクトで失敗し、「出力の生成に失敗しました-警告はエラーとして扱われます。」
XP d3dref9.dllの構築も混乱を招く可能性があり、D3Dヘッダーとタイプの検出に失敗することがよくあります。
解決
一般的に、Microsoftから直接送信されるrefrastソースドロップの構築には、2つの大きな問題があります。
まず、 build -cz -daytona
コマンドはタイプミスであるか、文書化されていない追加の外部設定に依存しています。このモードでビルドすると、すべてのソースが解析されますが、ビルドするプラットフォームは指定されません。実際の出力が指定されているすべてのプラットフォーム dirs
( daytona
および win9x
)は、「オプション」であるため、実際には何も構築されていません。これに対する解決策は、代わりに正しく指定されたコマンド build -cz daytona
を使用することです( daytona
には「-
」はありません)。これにより、ソースが解析され、実際にすべてがビルドされます。
これを貼り付けると、通常、すぐに使用できるビルド設定にも問題があります。
新しいWDK(Vistaなど)は通常、最終的なリンク手順で誤ったリンカーエラーで失敗します。これは以下を追加することで簡単に修正できます:
LIBRARIAN_FLAGS = $(LIBRARIAN_FLAGS) /IGNORE:4001
link / sources.inc
ビルドファイルへ。この後、ソースドロップのルートにある build -cz daytona
は、すぐにすべてをビルドおよびリンクする必要があります。
XPでは、古いDDK(Windows Server 2003以前、「XP」ラベル付きDDK)を使用している場合にも問題が発生することがよくあります。特に、refrastプロジェクトは外部に存在するコアD3D9ヘッダーに依存しており、これらはXP DDKには含まれていません。これを解決するには、最新のWDK(XP後の「DDK」からブランド変更)を使用するだけです。命名に反して、すべての新しいWDKは一般に古いリリースのスーパーセットであるため、XPに戻ったプラットフォームのビルド環境が含まれます。
また、新しいWDKコンパイラリリースでより多くのペダンティックコンパイラエラーをトリガーするコードを含む、いくつかのXP参照ソースリリースに問題がある可能性があります。ただし、これらは通常、コンパイラによって発生した単純な安全性/正確性エラーに応じて、反復コンパイルとソース調整によって簡単に修正できます。