2009-04-20 24 views
1

私は、C++コンパイラが限られている組み込み(Windows以外の)組み込みシステムでCOMインターフェイスを使用することを検討しており、特にC++を使用したオープンソースのCOM実装を探しています。例外の使用(はい、私はCOMが例外を使用しないことを知っていますが、実装はそれらを内部的に使用することができます)。オープンソースのCOM実装はどのような組み込みシステムで動作しますか?

この時点では、IUnknown、IDispatch、VARIANTなどのすべてのコアCOMタイプのスマートポインタ、BSTRなどのヘルパークラスのC++定義を主に探しています。QueryInterfaceとIDispatchを実装するサポートレベルいいですが、私も自分でそれをすることができます。私はITypeInfoの実装を見たいと思いますし、DCOMの組み込み実装は魅力的なものになります。

私はVisual Studioに付属しているMicrosoftのソースを使用することができますが、私が必要としない多くの定義を取り込むという複雑さのために避けたいと思います。それは非Windowsプラットフォーム上にあります。私はATLにも徹底的に精通しています。コンパイラの制限のために、このような重いテンプレートアプローチを使用することはできません。私はCOMとDCOMに多くの経験を持っていますので、すべての定義とヘルパークラスを自分で記述することができ、必要に応じて独自のDCOMシステムを作成することもできます。しかし、既存のオープンソース実装がある場合は、むしろ既存のオープンソース実装を使用したいと思う。お勧めはありますか?

答えて

1

私が気づいているもっとも近いオープンソースの実装は、MozillaのXPCOMです(MicrosoftのCOMとまったく同じではありませんが、まったく同じです)。しかし、私はまだそれが単体で構築することが可能かどうかはわかりません。instructions providedがかなり時代遅れです。

1

私はWineを見ることをお勧めします。ソースコードはC++ではなくC言語になっているので、完全なC++サポート、C++テンプレートなどのすべての問題を回避することができます。Wineには、多くの(ほとんどの)標準インターフェースが実装されています。

たとえば、ソースコードLoadTypeLibITypeInfoの実装を返す)へのソースコードはdlls/oleaut32/typelib.c:383です。 ITypeInfo::AddressOfMembertypelib.c:6742(ITypeInfo_fnAddressOfMember内)です。

(これはCOMがC言語で実装されているのを見るには幾分奇妙ですが、COMはバイナリ標準を正確に定義しているため、COMコンポーネントは消費言語に制限を加えることなく、

2

数年前、私はCOM/DCOMのFOSS実装を開始することを検討していましたが、主にオープンソースコミュニティの誰にも面白いとは思っていなかったので、どこにも行きませんでした。 Software AG(EntireX DCOMと呼ばれます)の独自の実装があります。これは面白くないと思います。

MozillaのSambaやWineの実装やXPCOM以外のオープンソースプロジェクトに関しては、OpenCOMがあります。彼らはSourceForgeにコードを掲載しています。

関連する問題