クロスプラットフォームのインプロセスダイナミックライブラリバインディングのための C++ ラッパーの推奨事項 (例:軽量で高性能な COM または CORBA) [終了]

StackOverflow https://stackoverflow.com/questions/1854323

質問

私たちは、アプリの利用者が独自のアルゴリズムを提供できるようにするプラグイン「アーキテクチャ」を備えたアプリケーションを開発しています。(基本的にはパーサーのセットを用意し、サードパーティが独自のパーサーを提供できるようにします)

ドメイン空間は非常に高いパフォーマンスを必要とするため、アウトプロセス バインディングは機能せず、CORBA や COM などの重量のあるものはそのままにしておく必要があります。

基本的に、私たちはシンプルなクロスプラットフォーム ラッパーを探しています。

  • 相対パスからライブラリをロードする
  • 特定の dll/.so を何らかの構成/名前にマッピングする
  • 初期化を実行し、ライブラリにクエリを実行して、必要な機能が提供されていることを確認します。

これは実際には、loadlibrary() とメソッド呼び出しのエクスポートを単にラップしているだけだと思います。これを自分で書くこともできますが、十分な量があるため、既存のコードを使用することをお勧めします。

繰り返しになりますが、スループットとパフォーマンスは非常に重要です。

同様の質問は次のとおりです。

COM に代わるクロスプラットフォーム - これは近いですが、インプロセスのみが必要です。アウトプロセスは必要なく、私たちのニーズは少し「軽量」です。

C++ クロスプラットフォーム動的ライブラリ。Linux と Windows

これはアンマネージ C++ 用です - .NET は使用できません

編集 - 見つかったこと

私たちはそれを発見しました ポコ 私たちのニーズに最適です。ボーナスとして このページ C++ 開発の現状と言語の方向性についての非常にありがたいコメントです...

Poco が提供する、私たちが必要としていたシンプルなクロスプラットフォーム ラッピングでした。実際にはそれほど多くのことはありませんが、それでも時間とテストを節約できます。実行時に追加のオーバーヘッドはありません。

役に立ちましたか?

解決 2

私はこれもうまくいくかもしれないと思います: http://pocoproject.org/docs/Poco.SharedLibrary.htmlする

他のヒント

ACE のライブラリは、相互に動作動的ライブラリのロードのラッパーが含まれていプラットフォーム。 あなたは無地のLoadLibraryより快適にしたい場合は、 TAOはACE ORBをを見て。 TAOとCORBAを使用すると、めちゃめちゃパフォーマンスで、最も可能性の高いTAOがそれらを最適化して、あなたは、プロセスの呼び出しで使用する場合は特に任意の自己細工のプラグイン・インフラストラクチャーを打つます。

動的ライブラリクロスプラットフォームのラッパーの使用を使用するために ACE_DLLする。それはあなたが言及したのLoadLibrary()の周りの最も基本的なクロスプラットフォームのラッパーを提供しています。

ACE_DLLを使用し、TAOを用い間でサービス構成フレームワークでありますあなたがオブジェクトを動的にロードすることができますACEのに。ロードした後、あなたが実装され、ロードされたオブジェクト上の任意のメソッドを呼び出すことができ、ロードされたオブジェクトへのアップキャストのポインタを取得することができます。

それを行うためのコードは次のようになります:

char const * const cpc_myClass = ACE_DYNAMIC_SERVICE_DIRECTIVE(
  "myclass",
  "dllname",
  "_make_MyClass",
  ""
);
result = ACE_Service_Config::process_directive(cpc_myClass);
MyClass * p_obj = ACE_Dynamic_Service<MyClass>::instance ("myclass");
p_obj->callAnyMethodYouLike();

TAOは、コロケーションの最適化の2種類(thru_poaと直接的に)知っていると説明されています:

  

の直接の戦略を使用して、連結されたオブジェクトのメソッド呼び出しは、POAの状態を確認せずサーバントへの直接呼び出しになります。

あなたは正しく使用した場合TAOがいかに効果的で驚かれるかもしれません。私はコンセプトの簡単な証明を作成することをお勧めして測定を行います。

scroll top