如何从Linux上的.so文件中获取C ++类?

我正在使用ACE库来做一些反应器工作。 在linux上,默认的ACE编译输出是libACE.so。 我通常使用-lACE编译选项来编译它,但这取决于我是否已经在ld.so.conf.d目录中configuration了libACE.conf。 如果我想子类ACE_Task,可以从ACE.so导入,编译依赖于libACE.so,如果我想dynamic加载ACE.so,我该怎么做? 我试过了,如果我使用dlopen,那么会出现链接错误。 那么,有没有办法dynamic加载ACE.so,仍然可以像这样实现ACE_Task?

class test: public ACE_Task<ACE_MT_SYNCH> { } 

子分类主要发生在编译时。 您需要在某个头文件[s]中正确定义超类[es]。

在运行时,重要的是vtable和继承成员函数(也许RTTI)的可用性。

您可能想要将libACE.so链接到您的共享对象(您正在构建的dlopen -ed事物)。 这是可能的,例如g++ -rdynamic -shared your*.pic.o -lACE -o yoursharedobject.so