- ベストアンサー
DirectXを使った動画再生プログラム
最近DirectXを使った動画再生プログラムを作っているのですが、いろいろ調べてみてもやり方がわかりません。 どなたか知っている方がいらっしゃいましたら教えていただきたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 別子 'LPDIRECTDRAW7' がシンタックスエラー 単純にIncludeの順番か環境に問題があるかもしれません。 DShow.hの中のヘッダでddraw.hがIncludeされていて、 DirectXSDKが入ってないとか。。。 恐らく、LPDIRECTDRAW7はddraw.hに書かれていると思うので、 DirectXSDKをインストールしてみてはどうでしょうか?
その他の回答 (4)
- amazontester
- ベストアンサー率22% (11/48)
あ、すみません。 #include <DShow.h>でもOKでした。 ところで今入れているDirectXとVisual Studioのバージョンは何ですか? 最新版のDirectXSDKをインストールし直す → PlatformSDKをインストール が無難な解決策のように思えます。
- amazontester
- ベストアンサー率22% (11/48)
#include <DShow.h> ↓ #include <dshow.h> に変えてみては?
- amazontester
- ベストアンサー率22% (11/48)
http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#filelist ここにあるpsdk-x86.exeは導入しましたか? DirectShowはPlatformSDKに2005年より移行されていますので。。
お礼
ありがとうございます。 それも導入したのですが、全く動きません。 どうすればいいか分からない状況です。
- aris-wiz
- ベストアンサー率38% (96/252)
>いろいろ調べてみてもやり方がわかりません。 調べた結果何がわからなかったのでしょうか? 1から10まで教えるのは土台無理ですし、 他人のコードをそのまま使うだけではそれ以上のものを 作ることはできないでしょう。 とはいえ、サンプルをみてコードを読むことは 悪いことではないので、この辺りを『参考』に してみてください。 http://codezine.jp/a/article/aid/322.aspx 上記のサイトは登録制なのでサンプルを見る場合には 登録してください。(無料です)
お礼
これを実行すると、以下のようなエラーが出ました。 \program files\microsoft platform sdk\include\strmif.h(30727) : error C2061: 構文エラー : 識別子 'LPDIRECTDRAW7' がシンタックスエラーを起こしました。 c:\program files\microsoft platform sdk\include\strmif.h(30740) : error C2061: 構文エラー : 識別子 'LPDIRECTDRAW7' がシンタックスエラーを起こしました。 cl.exe の実行エラー Douga.exe - エラー 29、警告 0 ここには一部しか載せていません。 補足にも書きましたが、よければご指摘お願いします。
補足
以下に書いたプログラムを載せますので(長いですが・・・)、もしよければご指摘願います。 ・FilterGraph.cpp #include <Windows.h> #include <String.h> #include <DShow.h> #include <conio.h> #include <stdio.h> IGraphBuilder * pigb = NULL; IMediaControl * pimc = NULL; void main () {OPENFILENAME fname; static char fn [256] ; memset ( &fname, 0, sizeof (OPENFILENAME) ); fname.lStructSize = sizeof (OPENFILENAME) ; fname.lpstrFile = fn; fname.nMaxFile = sizeof (fn); fname.Flags= OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; if( !GetOpenFileName ( &fname ) ) return; WCHAR filename [ MAX_PATH ] ; HRESULT hr; CoInitialize (NULL) ; MultiByteToWideChar ( CP_ACP, 0, fn, -1, filename, MAX_PATH ); hr = CoCreateInstance ( CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**) &pigb ); if (SUCCEEDED (hr) ) { pigb -> QueryInterface (IID_IMediaControl, (void**) &pimc ); hr = pigb -> RenderFile( filename , NULL ); if( SUCCEEDED(hr) ) { pimc -> Run (); printf("再生中です。再生終了後どれかキーを押してください") ;getch (); } } if( pigb ) pigb -> Release () ; if( pimc ) pimc -> Release () ; CoUninitialize (); return; }
お礼
何度もすいません。 さらに変更を加えると以下のようなエラーが発生しました。 --------------------構成: Douga - Win32 Debug-------------------- リンク中... strmiids.lib(strmiids.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください link.exe の実行エラー Douga.exe - エラー 1、警告 0 ご指摘をお願いします。
補足
DirectXはMicrosoft DirectX SDK (August 2007) Visual Studio は C++6.0 を使用しています。 少し変えてみたら以下のようなエラーが出てきました。 ouga.obj : error LNK2001: 外部シンボル "_IID_IMediaControl" は未解決です douga.obj : error LNK2001: 外部シンボル "_CLSID_FilterGraph" は未解決です douga.obj : error LNK2001: 外部シンボル "_IID_IGraphBuilder" は未解決です Debug/Douga.exe : fatal error LNK1120: 外部参照 3 が未解決です。 link.exe の実行エラー ご指摘をお願いします。