4

私はDirectXSDK、Platfrom SDK、DirectShowの初心者です。最新のPlatformSDKとDirectXSDKを2009年8月にダウンロードしました。私はフォルダにサンプルプロジェクトをビルドしようとしました:

Microsoft Platform SDK\Samples\Multimedia\DirectShow\Capture\PlayCap\  

そして、次の構築エラーがありました:

LINK : fatal error LNK1181: cannot open input file 'D:\Program Files\
Microsoft Platform SDK\samples\multimedia\directshow\baseclasses\
WIN2000_DEBUG\strmbasd.lib'

私が理解している限り、必要なライブラリを取得するには、「Microsoft Platform SDK \ Samples \ Multimedia \ DirectShow \BaseClasses\」ディレクトリにすべてのソースをビルドする必要があります。
私はそのディレクトリでnmakeを試し、次のようになりました。

D:\Program Files\Microsoft Platform SDK\Samples\Multimedia\DirectShow\
BaseClasses\ctlutil.h(278) : error C4430: missing type specifier - int
assumed. Note: C++ does not support default-int.

その行のコードは次のとおりです。

278: STDMETHODIMP
279: CMediaEvent::NonDelegatingQueryInterface(REFIID riid, void **ppv)

私は何を間違えますか?信じられないことですが、Microsoftのライブラリを使用するのは非常に難しいはずです。

4

3 に答える 3

3

Microsoftは、PlatfromSDKの名前をWindowsSDKに変更しました。最新のWindowsSDKは、Windows7および.NETFramework3.5SP1用のMicrosoftWindowsSDKです。

Windows7用のWindowsSDKには、すべてのDirectShowプロジェクト用のVisual Studio20082005プロジェクトファイルがあります。

于 2010-01-07T07:57:26.853 に答える
1

Xp64ボックスで、amcapサンプルを実行するためにDirectShowベースクラスライブラリを構築することができました。2010年6月のMicrosoftDirectXSDKと、すべてのC /C++コンパイラを備えたMicrosoftWindowsSDK for Windows 7(7.1)をインストールしました。

まず、DirectShowベースクラスをコンパイルする必要があります。

通常の古いcmd.exeを開きます

cd C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses

VCBuild.exeがインストールされていないというエラーが発生した場合は、slnとさまざまなプロジェクトファイル(例:C / C ++ vcproj)が古いため、次のコマンドでそれらを適切にアップグレードし、古い古いvcprojファイルを新しいくだらないファイルに変更します。 vcxprojファイルVCUpgradeは私のマシンにあります:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vcupgrade.exe

paramsのさまざまな組み合わせをvcupgradeで試した後でもmsbuildを使用してslnをビルドすることはできません(ドキュメントは危険にさらされます)。そのため、プロジェクトを直接コンパイルする必要がありました。とにかく、SLNという名前のバッチファイルvarを残しました。本当に革命的な

VCUpgrade -nologo -overwrite baseclasses.vcproj

これにより、さまざまな構成を簡単にコンパイルできます

set SLN="baseclasses.vcxproj"

基本クラスのリリースビルドはstrmbase.lib を作成し、 デバッグstrmbasd.libを作成することに注意してください。amcapにはリリースビルド が必要です。amcapのビルドはデバッグできます。

A)リリースWin32をコンパイルします(== x86)

MsSdkのSetEnv.Cmdを使用すると、 vsvars32.bat quagmireのほか、エプリプシーを誘発するバッチのWebに依存しながら、実際に機能することから1つまたは2つの致命的な欠陥になるように特別に設計された800万の異なるcmdシェルを回避できます。それらを行うためのファイル(ねえ!多分2つは関連しています!?)

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /release /x86 /xp

64ビットバージョンのMSBuild(おそらくターゲット?)を使用して運がなかったのですが、x86MSBuildは問題なく動作しています。

"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Release /p:Platform=Win32

B)リリースX64をコンパイルします

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /release /x64 /2003

"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Release /p:Platform=X64

次に、両方のバージョンのamcapをコンパイルできるようになりました

通常の古いcmd.exeを開きます

cd C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\capture\amcap

VCvcprojvcxprojアップグレードします

VCUpgrade -nologo -overwrite amcap.vcproj

set SLN="amcap.vcxproj"

A)デバッグWin32をコンパイルします(== x86)

コンパイラ、lib、include、...パスを設定してからコンパイルします

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /debug /x86 /xp

"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Debug /p:Platform=Win32

B)デバッグX64をコンパイルします

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.Cmd" /debug /x64 /2003

"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" %SLN% /p:Configuration=Debug /p:Platform=X64

SysInternals * Process Explorer *を使用して、各exeが実際にそれぞれ32ビットと64ビットであることを確認しました。私が一緒に仕事をしたほとんどの開発者がProcessExplorerについてさえ知らないのは、説明のつかないようです。私は一日中そのことに取り組んでいます。そして、はい、それは彼女が言ったことです。

于 2013-05-16T12:40:36.777 に答える
0

私にとって、このエラーは「C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Samples \ multimedia \ directshow \ baseclasses \ baseclasses.slnを開く」(私の場合、Visual Studio Express 2010の場合)を意味し、変換を要求します。 、そうしてから、「リリース」と「デバッグ」の両方をビルドします。

次に、自分のプロジェクトで、プロジェクトのプロジェクト設定の下に

例: G:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses 「VC ++ディレクトリ」の先頭にインクルードパスを追加しG:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses\debug、libパス(その中の任意の場所)に追加します。

https://msdn.microsoft.com/en-us/library/windows/desktop/dd407279(v=vs.85).aspxも参照してください。

于 2016-05-11T11:00:03.030 に答える