2016-04-12 7 views
1

ビジュアルコミュニティー2015で私はC++プロジェクトを持っています。プロジェクトのプロパティを入力するとき、私はまた、セットのcppファイルのトップに 私はvC++でsamplegrabberを使用するにはどうすればよいですか?サンプルグラバーが定義されていません

#include "stdafx.h" 
#include "VideoCaptureFilterSample.h" 
#include "VideoCaptureFilterSampleDlg.h" 

#ifdef _DEBUG 
#define new DEBUG_NEW 
#endif 

を持っている> VC++ディレクトリ私は、このディレクトリを追加しました:C:\プログラムファイル%28x86%29マイクロソフトのSDK \ WINDOWS \ v7の\を。定義されていない

hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER, 
     IID_PPV_ARGS(&pGrabberF)); 

CLSID_SampleGrabber:私は私のコードでこれを入力すると1 \サンプル\マルチメディア\のDirectShowの\ baseclasses

問題があります。

これまでに何を試みましたか?ダウンロードされたdirectx sdk 9と6とMicrosoft sdk 7.1がqedit.hのためにGoogleで検索されましたが、ファイルが見つかりませんでした。 CLSID_SampleGrabber

答えて

1

を定義する方法を見つけ出すことはできません次のように宣言します:extern "C" { extern GUID CLSID_SampleGrabber; }

はその後amstrmid.libにリンクしてください。あなたが他のものを必要とする場合に備えて、シンボルをlibsディレクトリからgrepすることができます。

私はdshowサンプルファイルを用意していないので完全にテストしませんでしたが、デバッグしたときにはc1f400a0-3f08-11d3-9f0b-006008039e37などのように解決されました。そのGUIDの最初の部分についてgoogleを使用すると、もっと多くの情報を見つけることができます:時には、魔法の指導で必要なものはすべて小さなフックで、残りの部分を簡単に掘り下げることができます。

+0

@Roman Rさんは、おそらくより良い答えですが、私は誓う、私はそのGUID右の最初の時間を過ごしました。それは本当に重要なことではありませんが、私は何らかの理由で異なっていました。 – zeromus

+0

あなたのCLSIDは大丈夫でした。正確に正しいものに更新しました。それ以外はすべて良い立場にある。 –

+0

奇妙なことに、バージョン6.1のWindows SDKよりも新しい2つのamstrmid.libを含む4つの異なるclsidsが見つかりました。しかし、私はレジストリにあなたのものを持っています。私はarmstrmid.libがこの目的のためにゴミであると思います。私は自分の答えを削除すべきです、どう思いますか? – zeromus

2

CLSID_SampleGrabberは、以前はWindows SDKから削除されていましたが、宣言を見つけるには、version 6.1 Windows SDKと古いものが必要です。実装はWindowsオペレーティングシステムから最近削除されました(Windows Server 2012?)。

あなたはthis example次バックプロジェクトにそれを得ることができます。

#pragma region Re-Adding Removed from Windows SDK qedit.h 

struct __declspec(uuid("0579154a-2b53-4994-b0d0-e773148eff85")) 
ISampleGrabberCB : IUnknown 

... 

struct __declspec(uuid("c1f400a0-3f08-11d3-9f0b-006008039e37")) 
SampleGrabber; 
    // [ default ] interface ISampleGrabber 

... 

CComPtr<IBaseFilter> pSgBaseFilter; 
ATLENSURE_SUCCEEDED(pSgBaseFilter.CoCreateInstance(__uuidof(SampleGrabber))); 

リンクamstrmid.libは良いヒントですが、あなたはほとんどあなたも、同様ISampleGrabberや友人を必要とし、かつ、一人でCLSID_SampleGrabberを必要はありませんライブラリーはまだ(副作用として)GUIDをホスティングしていてもそれを取得できません。

も参照してください:

関連する問題