私はヘッダーファイルのCOMインターフェイスを持っています。私は動作する小さなwin32プログラムを作成しましたが、私のメインプログラムはC#で書かれています。マネージコードにCOMオブジェクトを追加する
だから私が得た唯一のことは、ヘッダー・ファイルであるとき、私は私のメインプログラムでは、このCOMオブジェクトをインポートしたいのですが、私はこれをどのように行うのですか?
私が見たすべての場所私はtlbファイルが必要です..?
私はちょうどあなたには、いくつかの余分な情報が必要かどうか尋ねる、または別の回避策:)すべての応答のための
[UPDATE] まず感謝を持つオブジェクトCOMに新たなんです! 私はいくつかのことを試みましたが、まだ私の問題を解決していません。私の研究では、私は、COM相互運用機能http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx#vcwlkcominteroppart1cclienttutorialanchor2
これは、私を助けていない説明した記事を見つけました。
[Guid("AD87369B-3BBA-4f1c-81C5-B92FCEA9A1F4"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
interface ICamera
{
//static HRESULT GetCameraInterface();
bool StartPreview();
bool StopPreview();
}
:COMクラスラッパーの作成
[ComImport, Guid("7C075F7F-FD71-40a2-AC63-0D0C4DB39ECA")]
class CCamera
{
// Cannot have any members here
// NOTE that the C# compiler will add a default constructor
// for you (no parameters).
}
:
は、COMコクラスの宣言:しかし、私は次のことを完了できる場合、私は移動を得ることができる必要がありますことを発見しました
- QueryInterfaceではなくキャストを使用:
{CCameraカム=新しいCCamera()を試みます。 ICamera test =(ICamera)cam; //test.StartPreview(); }キャッチ(例外e) {Console.WriteLineを(e.StackTrace)。 }
私はインターフェイスの一部のメソッドを実装する欠場するのでそう、これは、無効なキャスト例外を取得しますか? そして、どのように私はC++インターフェイスから次のメソッドを実装します:
static HRESULT GetCameraInterface(void __RPC_FAR *__RPC_FAR *ppvObject);
[SOLUTION] OK、私は解決策を得たが、私はインターフェイスをラップするためには解決しません。 代わりにC++ dllプロジェクトを作成し、必要なメソッドを公開しました。その後、私のC#プロジェクトでは、これらのメソッドをDllImportで使用できますか?誰かがこれをどのようにアーカイブしたかについてもっと説明が必要な場合は、私にメッセージを送ってください。
はい、私は読むことができましたが、私はWindows CEに開発しています。それはそこにしか登録されていないと思いますか?私はここで深い水の上に耐えてください。 – DNRN
comオブジェクトのDLLがありますか?もしそうなら、 "regsvr32.exe YourComLibrary.dll"を実行して登録することもできます。 – Botz3000
私はdllを持っていません:( – DNRN