<   2006年 03月 ( 3 )   > この月の画像一覧

e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

DirectShow のCSampleGrabber フィルタサンプルで、リンクエラーが発生

DirectShow の CSampleGrabber サンプルプログラムを改造して、ビデオファイルからサムネイルを取得するプログラムを作成中。
CSampleGrabber サンプルプログラムは、MSDN for .NET 2003 には載っているんだけど、どこを探しても見あたらない。
DirectX 9c SDKのインストールでもインストールされないみたい。

でも、マニュアルでもWebでも、当然あるものとして解説されていた。
不思議だ。

いろいろ探して約2日後、DirectX 9.0 のフルインストールCD-ROMの中に収録されているのを発見しました。
Webが最新だからと、もらったは良いが1度も使っていなかったCD-ROMでした。
やっと、その真価を発揮する事が出来ました。
[未だに、オンラインでGET出来る方法が見つからない(;_;)]

やろうとしている事は、このサンプル。
How To Get Data from a Microsoft DirectShow Filter Graph
Microsoft DirectShow フィルタ グラフからデータを取得する方法

※日本語訳版のソースコードは翻訳時に一部欠けてしまっているようです。

テストプロジェクトを作成して、試してから、いざ本番アプリケーションに組み込もうとすると、問題が発生しました。
リンクエラーが発生したのです。

リンクしています...
SampleGrabber.obj : error LNK2001: 外部シンボル ""public: virtual long __stdcall CBaseFilter::QueryVendorInfo(wchar_t * *)" (?QueryVendorInfo@CBaseFilter@@UAGJPAPA_W@Z)" は未解決です。
SampleGrabber.obj : error LNK2001: 外部シンボル ""public: virtual long __stdcall CBaseFilter::JoinFilterGraph(struct IFilterGraph *,wchar_t const *)" (?JoinFilterGraph@CBaseFilter@@UAGJPAUIFilterGraph@@PB_W@Z)" は未解決です。
SampleGrabber.obj : error LNK2001: 外部シンボル ""public: virtual long __stdcall CTransformFilter::FindPin(wchar_t const *,struct IPin * *)" (?FindPin@CTransformFilter@@UAGJPB_WPAPAUIPin@@@Z)" は未解決です。
SampleGrabber.obj : error LNK2019: 未解決の外部シンボル "public: __thiscall CTransInPlaceInputPin::CTransInPlaceInputPin(char *,class CTransInPlaceFilter *,long *,wchar_t const *)" (??0CTransInPlaceInputPin@@QAE@PADPAVCTransInPlaceFilter@@PAJPB_W@Z) が関数 "public: __thiscall CSampleGrabberInPin::CSampleGrabberInPin(class CTransInPlaceFilter *,long *)" (??0CSampleGrabberInPin@@QAE@PAVCTransInPlaceFilter@@PAJ@Z) で参照されました。
Debug/ISearch.exe : fatal error LNK1120: 外部参照 4 が未解決です。


多分、WCHAR の定義がライブラリ側とアプリ側で異なる事が原因と思いました。
WCHAR は、unsigned short の typedef の場合と、組込型の wchar_t の typedef の場合の2種類があります。
なので、これが原因なのではないかと勘ぐり、いろいろと設定やコードを変更してみたのですが、なかなかコンパイラをだますのは難しい、、、断念しました。

で、やってみたのは、BaseClasses の .cpp ファイルをすべてアプリのプロジェクトに追加。
プロジェクトと一緒にコンパイルしちゃう事で、リンクエラーが解消されました。
でも、これらは、本当は、ライブラリファイル strmbasd.lib に入っていなくてはいけない関数たち。

やっぱり、コンパイラの設定か、プリプロセッサによる置換で、型の互換性が一致していないのが原因のような気がしています。
悩ましい。。。

時間がないので、抜本的な解決方法の探索は後回し。
[PR]
by isoq | 2006-03-24 20:29 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

迷惑メール

3月5日から、私のYahooメールのアカウントに 突如 迷惑メールが送られてくるようになりました。
どこからかメールアドレスが漏れたのだと思います。

多分、発信元は1カ所。
全部、フリービットのアドレスからだったので、とりあえず迷惑メール問い合わせ窓口に一報入れておきました。

なぜ、3月5日からか?
そこが引っかかりますね。

3月5日にアドレス情報が漏れる機会となると、ある会社の座談会に出席したことしか思い当たりません。
その会社は社長が交代して個人情報保護に注力するそうですが、、、
ま、そこから漏れたのかどうかは実際わかりませんけどね。

フリービットでは、送信者認証機能付きメール(587番ポート) と、 25番ポートによる送信メール流量制限を今月から始めるそうですが(詳細)、メールのヘッダを見ると、どうもフリーのWEBメールが多用されているようです。
この対処法では、迷惑メール発信を抑制するのは結構難しいですね。

なにか良い方策は無いものでしょうか。
[PR]
by isoq | 2006-03-10 13:56 | コンピュータ
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇

VCプロジェクトの不要ファイル(検索パラメータ)

とりあえず、これだけ消すと、かなり軽くなる。

.obj;.tmp;.enc;BuildLog.htm;.ilk;.pch;.pdb;.tlh;.tli;.idb;.ncb;.aps

(VC.NET 2003)
[PR]
by isoq | 2006-03-01 19:44 | C/C++/Win32
e87.com(千趣会イイハナ) 花を贈るなら日比谷花壇