人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DirectShowを使いたいのですが、設定がうまくいきません。
環境はWindows VISTA(32bit)
Windows SDK v6.1 ,DirectX SDK (March 2008),Visual Studio 2008

「Windows SDKとDirectX SDKのアップデート(2008/07/12」というページを参考に設定を行い(どこか設定を間違っている可能性はあります)、
MSのヘルプページから、「すべての既定のライブラリの無視」、「バッファセキュリティチェック無効」をし、
http://www.geekpage.jp/programming/directshow/samplegrabber.php
↑こちらのページのサンプルコードをそのままコピペして動かそうとしています。
すると以下のようなエラーが出てしまいます。

error LNK2001: 外部シンボル "__imp__CreateFileA@28" は未解決です。
error LNK2001: 外部シンボル "__imp__CoCreateInstance@20" は未解決です。
……
fatal error LNK1120: 外部参照 11 が未解決です。

おそらくリンカの設定をどこかで間違えているのだと思いますが、自分にはよくわかりません。すみませんが、よろしくお願いします。

●質問者: みなみ
●カテゴリ:コンピュータ
✍キーワード:28 DirectX MARCH MS SDK
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● DEARNA
●60ポイント

WindowsSDKのライブラリパスが間違っているか、プロジェクトの設定がWindows用にあってないものと思います。


・ツール→オプションダイアログ内のプロジェクトおよびソリューションにVC++ディレクトリ、という設定項目があります。ここのインクルードファイルとライブラリファイルの内容に、WindowsSDK、DirectXSDKのそれぞれのincとlibへのパスが入っているかどうか確認します。なければ追加をしてください。


・ビルドプロジェクトのリンクファイル設定を確認します。プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加の依存ファイル、の箇所に使用するライブラリファイルを記入します。この例ではコマンドプロンプト用のプログラムですけど、Windowsの機能を使用する場合、

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

の指定を入力しておくと、必要なWindowsAPIをリンクできるかと思います。


・プロジェクトの文字セットがあっていない事も考えられます。プロジェクトのプロパティ→構成プロパティ→全般→文字セットの項目があります。これが「マルチバイト文字セットを使用する」となっている場合は「Unicode文字セットを使用する」に変更してビルドしてみてください。

◎質問者からの返答

dearnaさん、すばやい回答ありがとうございます。おっしゃるとおりにやってみましたがまだ未解決です(><)

★インクルード&ライブラリファイルは

C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\BaseClasses

C:\Program Files\Microsoft SDKs\Windows\v6.1\Samples\Multimedia\DirectShow\Common

C:\Program Files\Microsoft SDKs\Windows\v6.1\Include

C:\Program Files\Microsoft DirectX SDK (March 2008)\Lib\x86

C:\Program Files\Microsoft DirectX SDK (March 2008)\Lib\x64

C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib\x64

C:\Program Files\Microsoft SDKs\Windows\v6.1\Lib\IA64

を指定してありますので大丈夫かと思います。

★リンカの設定では、書いてくださったライブラリはすべてデフォルトで指定されているものですね?DirectShowのMicrosoftのヘルプに「すべての既定のライブラリの無視を選択」とあったのでこれらはすべて無視の設定にしました。無視しない選択にするとなぜかエラーが10個ほど増えるので、無視でいいのかなと思うのですが、僕はWindowsAPIについて全然知らないのでよくわかりません。

★Unicode文字セットに変えたところ、エラーの数が減りました。

依然として以下のようなエラーが出ます。

1>DSpict.obj : error LNK2001: 外部シンボル "__imp__CoCreateInstance@20" は未解決です。

1>DSpict.obj : error LNK2001: 外部シンボル "__imp__CoUninitialize@0" は未解決です。

1>DSpict.obj : error LNK2001: 外部シンボル "__imp__MessageBoxA@16" は未解決です。

1>DSpict.obj : error LNK2001: 外部シンボル "__imp__printf" は未解決です。

1>DSpict.obj : error LNK2001: 外部シンボル "__imp__CoInitialize@4" は未解決です。

1>LINK : error LNK2001: 外部シンボル "_mainCRTStartup" は未解決です。

すみませんが、また対応がわかるものがあれば教えてください。よろしくお願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ