Re: VC++6.0でDirectShowを使うには? ( No.1 ) |
- 名前:Dixq 日時:2009/08/28 23:05
後、サンプルではUSBカメラが繋がっていなかった場合、異常をきたすのですが、
USBカメラが繋がっているかを先に調べる方法は無いでしょうか?
|
Re: VC++6.0でDirectShowを使うには? ( No.2 ) |
- 名前:IW 日時:2009/08/30 01:48
> プロジェクトファイルはBaseClasses.slnになっていました
BaseClasses.dswがないのなら、vc6で新規にプロジェクトを作ればいいのでは?
> error C4430
operator=(LONG);
の行ですか?
戻り値がないので、C++としてはエラーになっているのでしょう。
COARefTime& operator=(LONG);
としてみてください。
(でも今度は別のところでエラーが出そう……)
> USBカメラが繋がっているかを先に調べる方法
管理人さんのサンプルを見ましたが調べてますよ、ちゃんと。
カメラがなければキャプチャデバイスの列挙に失敗するはずです。
|
Re: VC++6.0でDirectShowを使うには? ( No.3 ) |
- 名前:Dixq 日時:2009/08/30 15:03
ご回答ありがとうございます。
>vc6で新規にプロジェクトを作ればいいのでは?
そうなんですよね;
ただlibファイルを生成した事がないのと、沢山ファイルがあってどれをどのように
構築したらよいのかよくわからないのです;
>COARefTime& operator=(LONG);としてみてください。
ありがとうございます。
今手元に環境が無いので、明日やってみます!
>管理人さんのサンプルを見ましたが調べてますよ
pData->pClassEnum == NULL
または
pData->pDevEnum == NULL
の時、失敗ということかな・・と思ったのですが、
カメラが接続されていないと初期化関数の中の
// 追加を行ったのでキャプチャフィルタの参照をリリース
pData->pbf->Release();
の行でハンドルされてないとエラーが起こるのです・・。
どうしたらいいでしょうか;
|
Re: VC++6.0でDirectShowを使うには? ( No.4 ) |
- 名前:IW 日時:2009/08/30 21:14
> の行でハンドルされてないとエラーが起こるのです・
カメラが繋がっていない場合は pData->pClassEnum == NULLで引っかかると思ったのですが。
ならそこまでの各種 DirectShow関連の関数呼び出しの戻り値をチェックしたり、
オブジェクトを得る関数の時は、そのオブジェクトが NULLになっていないか
チェックするコードに変更してみて下さい。
どこかで本当はエラーになっているかもしれません。
|
Re: VC++6.0でDirectShowを使うには? ( No.5 ) |
- 名前:Dixq 日時:2009/08/31 23:04
ありがとうございます。
VC++6.0で同じプロジェクトを作りたいのですが、
トライしてみたものの、どのように作ればよいものか・・。
どのように作れば同じプロジェクトが出来上がるでしょうか?;
|
Re: VC++6.0でDirectShowを使うには? ( No.6 ) |
- 名前:IW 日時:2009/09/01 01:47
vc6は大昔に使ったことがあるのですが、もうほとんど忘れてしまいました。
が、今の VisualStudioと拡張子は違えど、さほど変わりはなかったと思います。
cppをプロジェクトに突っ込んで、プロジェクトの設定を libにしてそのままビルドすればいいはずです。
細かい設定は vcprojの方の設定を見ながら対応している項目を設定していくしかないですね。
|
Re: VC++6.0でDirectShowを使うには? ( No.7 ) |
- 名前:Dixq 日時:2009/09/02 22:54
一つ一つエラーを潰してやっと出来ました〜(T_T
まだ、これで実行させてみてないのでうまくいくかはわかりませんが、
一応libファイルは出来ました・・。
お世話になりました!
|
Re: VC++6.0でDirectShowを使うには? ( No.8 ) |
- 名前:Dixq 日時:2009/09/06 21:51
無事前述の問題はクリア出来たのですが、更なる問題が・・。
2004のものをインクルードパスに通すと以下のようなエラーが大量に出てきてしまいます;
1>c:\program files\microsoft directx 9.0 sdk (summer 2004)\include\d3dtypes.h(2072) : error C2365: 'D3DVBLEND_DISABLE' : 再定義; 以前の定義は '列挙子' でした。
1> c:\lib\dxlib\dxdirectx.h(1933) : 'D3DVBLEND_DISABLE' の宣言を確認してください。
1>c:\program files\microsoft directx 9.0 sdk (summer 2004)\include\d3dtypes.h(2073) : error C2365: 'D3DVBLEND_1WEIGHT' : 再定義; 以前の定義は '列挙子' でした。
手順は前述の通りで、特に間違った事はしていないと思うのですが・・。
ちなみに他のPCでも同じ手順で同じエラーが出ました。
VC++6.0ではなく、2008にし、インクルードパスを最新のプラットフォームSDKにするとエラー無くコンパイルできます。
何がいけないのでしょうか・・。
DXライブラリに昔のライブラリと互換性が無い・・とかの問題でしょうか?
|
Re: VC++6.0でDirectShowを使うには? ( No.9 ) |
- 名前:管理人 日時:2009/09/09 00:56
DXライブラリは DirectX SDK と競合しないようになっていますので、
恐らく、ただ単に Summer 2004 の SDK が VC6.0 では使用できないのだと思います。
( 私の手元にある DirectX9.0 の一番最初の SDK では VC6.0 でも問題なくコンパイルすることができます )
いつから VC6.0 に非対応になったのかの正確なバージョンは覚えていません、すいません
|
Re: VC++6.0でDirectShowを使うには? ( No.10 ) |
- 名前:Dixq 日時:2009/09/14 06:30
ご回答ありがとうございます。
色々試しましたがやはり無理なようですね・・。
仕方ないので、2008でコンパイルすることとしました。
ありがとうございました。
|
Re: VC++6.0でDirectShowを使うには? ( No.11 ) |
- 名前:wish 日時:2009/09/14 16:00
解決した?ようですが、一応参考までに。
VC6.0上でDirectX Summer 2004 以降を使用する
場合、Extrasという追加プログラムが必要っぽいです
※MSDNはサイトをころころ変えるので
いつまでつながっているか定かじゃありませんが。。。
MSDN:
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=736585e1-10f0-4e85-b940-828cba9971f1&displaylang=en
ちょうどこのころDirectX9のインターフェイスが
一掃されて泣いた記憶がありますが。。。
開発環境を変えたくない人ようだと思います。
VC6も10年以上も前のツールですし、
今は無料で使えるVC2008とか出てますし、
わざわざ古いものでコンパイルしなくても
いいかもしれませんね。(^^;
|
Re: VC++6.0でDirectShowを使うには? ( No.12 ) |
- 名前:Dixq 日時:2009/09/15 09:17
wishさん
ご回答ありがとうございます。
なるほど・・時々みかけるExtraは何の為にあるのだろうかと思っていたのですが、
そういうことだったのですね。
VC++6.0を使う必要があったのですが、
今回は2008を使用することにしました。
ありがとうございました。
|