2011-11-04 9 views
12

私はC++ライブラリにCインターフェイスを記述していますが、私はいくつかの高品質のサンプル(またはベストプラクティス)を探しています。C++ライブラリへのCインターフェイスの例?

は、これまでのところ、この1はかなり有望なようだ:http://czmq.zeromq.org/manual:czmq

他の提案?

+0

私はちょうど私が:) –

+0

可能な重複して質問を読んで喜んで、ZeroMQをお勧めするつもりだった。http://stackoverflow.com/q/7953559/440558 –

+0

間違いなくその質問の複製。この質問は、それをうまく行う方法(つまり、C++ APIに基づいてC APIを設計する方法)の例を尋ねます。そのほかの質問は、まったくそれを行う基本的な仕組みにのみ関心があります。 –

答えて

0

C++ライブラリがWindows上でCOMとして記述されている場合。そのためのCインタフェースを自動的に生成するツールがあります。

1

よく書かれたC++ライブラリとの優れたCインターフェイスの例として、Parma Polyhedra Libraryを調べることができます。 PPLは無料のGPLエディットソフトウェアで、特にGCCコンパイラで使用されています。

0

FTGLは、Cインターフェイスを提供するC++ライブラリです。

注FTGLは、バージョン間でのバイナリ互換性を実現するためにpImpl paradigmを使用していることも:ここではまったく同じことを達成するための2つのサンプルプログラムです。なぜそれが良いのhereを参照してください。

免責事項:私はFTGLの貢献者です。低レベルのC APIはもともとPOSIXソケットのように見えることを意図しているのでhttp://cgit.freedesktop.org/mesa/mesa/tree/src/glu

0

libGLU(OpenGLのユーティリティライブラリ)は、部分的にC++で書かれています(私たちは時間の経過とともに一貫して組織化されました)。一方、実際のライブラリはC++にあります。

C++からCへのインターフェイスはlibzmq/src/zmq.cppにあり、 '本当の' C++コードを呼び出す一連の単純なC関数で構成されています。

CZMQは、コンストラクタ、デストラクタ、コンテナ、プライベートプロパティなどを持つ単純なクラスモデルを提供するなど、より高級なものを目指しています。

CZMQクラスのアプローチが明示的にマップされるように設計されていない限り、C++ APIにマップする方法がよく分かりません。

免責事項:私はCZMQのほとんどの著者です。

0

libzmqは奇妙な例一種であり、絶対的にオブジェクト指向ではない:

関連する問題