5

C++ DLL があるとします。私の知る限り、広く採用されている C++ 用の ABI 標準はありません。したがって、それが機能し、ターゲット アプリケーションのコンパイラに依存しないことを確認するには、ライブラリを C インターフェイスでラップする必要があります。

そのようなインターフェイスを自動的に生成できるツールはありますか? また、C インターフェイスの周りにラッパーを生成して、元の C++ オブジェクトであるかのように見せることができれば、それもいいでしょう。

Foo* f = new Foo();  // FooWrapper* fw = Foo_create();
f->bar("test");      // Foo_bar(fw, "test")

生成された C ABI を使用してライブラリで呼び出される C 関数に変換されます。C++ はかなり複雑な言語であり、すべてを C インターフェイスに簡単にラップできるわけではないことは理解していますが、C++ 言語のサブセットをサポートするようなソリューションがあるかどうか疑問に思っていました (おそらく、手動で作成された IDL/ XML ファイル)?

4

3 に答える 3