- 追加された行はこの色です。
- 削除された行はこの色です。
* VMR9Allocator 作成 [#w36ec523]
Platform SDK ( [[download:http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en]] ) にある VMR9Allocator というサンプルコード利用に関するメモ。
*** どこにある? [#adef9caa]
ここ。
(InstallDir)\Samples\Multimedia\DirectShow\VMR9\VMR9Allocator
*** コンパイルしてみる [#w1e68ab7]
makefile があるので、VS.NET ツールのコマンドプロンプトで、
C:\> cd (InstallDir)\Samples\Multimedia\DirectShow\VMR9\VMR9Allocator
C:\> (InstallDir)\Samples\Multimedia\DirectShow\VMR9\VMR9Allocator nmake
としてメイクしちゃって良いかも。
ここはソリューションとしてつくりたいので、プロジェクト新規作成。
「空のプロジェクト」を作って、そこにサンプルのソースファイル
*.cpp
*.h
*.rc
を全部追加。
プロジェクトのプロパティで、追加のインクルードディレクトリに、
..\inc
..\..\BaseClasses
を追加。
あと、最新の PlatformSDK の Include ディレクトリ(.h がある所)も追加しておく。
とりあえず次のファイルをインクルード。
#include <objbase.h>
//#include <comutil.h>
//#include <comdef.h>
//#include <windows.h>
//#include <windowsx.h>
BaseClasses の strmbasd.lib を作成する。
BaseClasses ディレクトリの下に dsw があれば、それを開いてビルド。
makefile があれば、nmake でメイク。
VS.NET ツールのコマンドプロンプトで、
C:\> cd (InstallDir)\Samples\Multimedia\DirectShow\BaseClasses
C:\(InstallDir)\Samples\Multimedia\DirectShow\BaseClasses\> nmake
nmake の場合は、Debug というディレクトリを作って、
その中に出来上がった lib をコピーしておく。
*** リンク(ビルド)してみる [#me74481e]
リンカの設定で、追加の依存ファイルに次のファイルを追加する。
d3d9.lib
d3dx9.lib
winmm.lib
odbc32.lib
odbccp32.lib
..\..\BaseClasses\Debug\strmbasd.lib
※commctrl.h をインクルードする場合は Comctl32.lib も追加。&br;
※というか、インクルードするものに応じて lib も追加。&br;
プリプロセッサの設定に、次の define を追加。
#define _WINDOWS
#define _WIN32_WINNT=0x400
//#define _WIN32_DCOM
2番目と3番目は同じ意味かも(なので3番目はいらないかも)。
※CoInitializeEx()を呼び出しているので、上記スイッチが必要っぽい。&br;
※プロジェクトの設定で "_WINDOWS;_WIN32_WINNT=0x400" と入力すればOK。&br;
ここまでで、えいやっとビルド実行。
多分 LNK2001(外部参照が未解決)というエラーが出るので、
Allocator.h の #pragma once の下あたりに次のコードを追加。
#pragma comment(lib, "uuid")
#pragma comment(lib, "dxguid")
#pragma comment(lib, "strmiids")
#pragma comment(lib, "amstrmid")
#pragma comment(lib, "quartz")
#pragma comment(lib, "msacm32")
#pragma comment(lib, "winmm")
#pragma comment(lib, "olepro32")
※amstrmid だけで良いかも。
これでビルド。これで多分通る。
以上。
-----
[[MLEXP. Wiki]]