2009-06-23 4 views
1

C#アプリケーションにDirectShow機能を追加する方法を解明しようとしています(.NET 6以降で動作している.net cf 3.5)。管理されていないアプリケーションを使用する方法と、管理されたC#のC++クラスWindowsのモバイル戦略のためのC#のDirectShow?

私はすでにC++で必要な機能を書いています。基本的には、COMを使用して必要なDirectShow機能を活用するマネージャークラスがあります。 クイック免責事項:私はCOMには新しく、C++とC#を統合するのは非常に新しくなっています。

私は、知識のある人が私がさらに研究するための基本的な戦略を提案できることを本当に望んでいます。

  1. のC#から、それに呼び出して、C++ DLLを作成します。ここには私がに見てきた、と私は彼らと一緒に発見した問題はその一部です。
    問題:私はスマートデバイスプラットフォームで作業しているので、管理されたC++ DLLを作成することはできません。そのためC#は残念ながら直接C++ DLLに呼び出すことはできません。 アンマネージドC++の "dshow manager"クラスのインスタンスをC#(COM経由)から最高のオプションを作成していますか?

  2. C++ DLLを作成して、必要なメソッドをPinvoke/DLLImportするだけです。私のソリューションはイベントリスナーを持っているので、個々のメソッドを呼び出すだけでなく、マネージャクラスのインスタンスを維持する必要があります(オプション3を参照)。

  3. C#でC++クラスを複製してから、C#からCOM経由でdshowメソッドを呼び出すだけです。 問題:これは私にとって最良の選択肢のようですが、ここで見つけたMSDNから、私は最初に「comインタフェースとタイプの管理対象定義を作成する」必要があります。残念ながら、DirectShow TLBファイルを見つけることができません。 TLBImp.exe経由でインポートします。すべてのWM6 SDKが私にdshow LIB、PDB、およびEXPです。いくつかのサイトが示唆しているように、TLBを作成するIDLファイルを見つけることさえできません。

私はまだ考えていますが、今は固執しています。助言がありますか? 事前に感謝!

答えて

2

おそらくthe desktop DShow.NET libraryを移植のガイドとして見ることができます。 Alex Mogurenkoさんのrecent blog on playing audio and video with DShow on WinMoもいいリソースです。

編集:私は戦略に関する質問に直接答えなかったと思います。はい、#3が行く方法です。 DShowをラップして呼び出すと、混乱しているインダイレクションの別のレイヤーを追加しないでください(COMはすでに混乱しています)。

+0

アレックスモグレンコの記事は、特に彼が行っていないので、私は心配していたすべてのTLBファイルを混乱させる必要はなかったようです。私はそれが私にとってうまくいく出発点だと思う。ありがとう! –

関連する問題