2

私はACEライブラリを使用していくつかのreactorジョブを実行しています。Linuxでは、デフォルトのACEコンパイル出力はlibACE.soです。私は通常、-lACEコンパイルオプションを使用してコンパイルしますが、これはld.so.conf.dディレクトリでlibACE.confを構成したかどうかに依存します。ACE.soからインポートできるサブクラスACE_Taskが必要な場合、コンパイルはlibACE.soに依存します。ACE.soを動的にロードする場合、これを行うにはどうすればよいですか?試しましたが、dlopenを使用すると、リンクエラーが発生します。だから、ACE.soを動的にロードし、それでもこのようにACE_Taskを実装できる方法はありますか?

class test: public ACE_Task<ACE_MT_SYNCH>
{

}
4

1 に答える 1

1

サブクラス化は、主にコンパイル時に行われます。一部のヘッダーファイルでスーパークラスを適切に定義する必要があります。

実行時に重要なのは、vtablesと継承されたメンバー関数(およびおそらくRTTI)の可用性です。

おそらく、libACE.soを共有オブジェクト(dlopen構築している-edのもの)にリンクする必要があります。これは例えばで可能ですg++ -rdynamic -shared your*.pic.o -lACE -o yoursharedobject.so

于 2012-12-07T10:06:28.613 に答える