この人頭いいなと思ったエピソード

最近DirectXを使った動画再生プログラムを作っているのですが、いろいろ調べてみてもやり方がわかりません。
どなたか知っている方がいらっしゃいましたら教えていただきたいです。

A 回答 (5件)

> 別子 'LPDIRECTDRAW7' がシンタックスエラー


単純にIncludeの順番か環境に問題があるかもしれません。
DShow.hの中のヘッダでddraw.hがIncludeされていて、
DirectXSDKが入ってないとか。。。
恐らく、LPDIRECTDRAW7はddraw.hに書かれていると思うので、
DirectXSDKをインストールしてみてはどうでしょうか?
    • good
    • 0

あ、すみません。


#include <DShow.h>でもOKでした。

ところで今入れているDirectXとVisual Studioのバージョンは何ですか?

最新版のDirectXSDKをインストールし直す → PlatformSDKをインストール

が無難な解決策のように思えます。

この回答への補足

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 の実行エラー
ご指摘をお願いします。

補足日時:2007/11/07 13:46
    • good
    • 0
この回答へのお礼

何度もすいません。
さらに変更を加えると以下のようなエラーが発生しました。

--------------------構成: Douga - Win32 Debug--------------------
リンク中...
strmiids.lib(strmiids.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
link.exe の実行エラー

Douga.exe - エラー 1、警告 0

ご指摘をお願いします。

お礼日時:2007/11/07 14:12

#include <DShow.h>



#include <dshow.h>

に変えてみては?
    • good
    • 0

http://www.microsoft.com/downloads/details.aspx? …

ここにあるpsdk-x86.exeは導入しましたか?
DirectShowはPlatformSDKに2005年より移行されていますので。。
    • good
    • 0
この回答へのお礼

ありがとうございます。
それも導入したのですが、全く動きません。
どうすればいいか分からない状況です。

お礼日時:2007/11/06 14:42

>いろいろ調べてみてもやり方がわかりません。


調べた結果何がわからなかったのでしょうか?

1から10まで教えるのは土台無理ですし、
他人のコードをそのまま使うだけではそれ以上のものを
作ることはできないでしょう。
とはいえ、サンプルをみてコードを読むことは
悪いことではないので、この辺りを『参考』に
してみてください。

http://codezine.jp/a/article/aid/322.aspx
上記のサイトは登録制なのでサンプルを見る場合には
登録してください。(無料です)

この回答への補足

以下に書いたプログラムを載せますので(長いですが・・・)、もしよければご指摘願います。
・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;
}

補足日時:2007/11/05 19:07
    • good
    • 0
この回答へのお礼

これを実行すると、以下のようなエラーが出ました。

\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

ここには一部しか載せていません。
補足にも書きましたが、よければご指摘お願いします。

お礼日時:2007/11/05 19:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報