私はC++ライブラリにCインターフェイスを記述していますが、私はいくつかの高品質のサンプル(またはベストプラクティス)を探しています。C++ライブラリへのCインターフェイスの例?
は、これまでのところ、この1はかなり有望なようだ:http://czmq.zeromq.org/manual:czmq
他の提案?
私はC++ライブラリにCインターフェイスを記述していますが、私はいくつかの高品質のサンプル(またはベストプラクティス)を探しています。C++ライブラリへのCインターフェイスの例?
は、これまでのところ、この1はかなり有望なようだ:http://czmq.zeromq.org/manual:czmq
他の提案?
C++ライブラリがWindows上でCOMとして記述されている場合。そのためのCインタフェースを自動的に生成するツールがあります。
よく書かれたC++ライブラリとの優れたCインターフェイスの例として、Parma Polyhedra Libraryを調べることができます。 PPLは無料のGPLエディットソフトウェアで、特にGCCコンパイラで使用されています。
FTGLは、Cインターフェイスを提供するC++ライブラリです。
注FTGLは、バージョン間でのバイナリ互換性を実現するためにpImpl paradigmを使用していることも:ここではまったく同じことを達成するための2つのサンプルプログラムです。なぜそれが良いのhereを参照してください。
免責事項:私はFTGLの貢献者です。低レベルのC APIはもともとPOSIXソケットのように見えることを意図しているのでhttp://cgit.freedesktop.org/mesa/mesa/tree/src/glu
libGLU(OpenGLのユーティリティライブラリ)は、部分的にC++で書かれています(私たちは時間の経過とともに一貫して組織化されました)。一方、実際のライブラリはC++にあります。
C++からCへのインターフェイスはlibzmq/src/zmq.cppにあり、 '本当の' C++コードを呼び出す一連の単純なC関数で構成されています。
CZMQは、コンストラクタ、デストラクタ、コンテナ、プライベートプロパティなどを持つ単純なクラスモデルを提供するなど、より高級なものを目指しています。
CZMQクラスのアプローチが明示的にマップされるように設計されていない限り、C++ APIにマップする方法がよく分かりません。
免責事項:私はCZMQのほとんどの著者です。
libzmqは奇妙な例一種であり、絶対的にオブジェクト指向ではない:
もう1つの高品質の例はOpen Dynamics Engineです。それはC++のバックエンドとCのフロントエンドを持っています。すべてがCリンク可能です。
私はちょうど私が:) –
可能な重複して質問を読んで喜んで、ZeroMQをお勧めするつもりだった。http://stackoverflow.com/q/7953559/440558 –
間違いなくその質問の複製。この質問は、それをうまく行う方法(つまり、C++ APIに基づいてC APIを設計する方法)の例を尋ねます。そのほかの質問は、まったくそれを行う基本的な仕組みにのみ関心があります。 –