我有一个共享对象my_lib.cc
,它在其标头中定义了一个类以及一个工厂函数:
extern Foo* GetFoo():
class Foo {
public:
Foo() {}
virtual ~Foo() {}
};
现在,我希望使用main.cc
库的应用程序包含:
#include "my_lib.h"
class Bar : public Foo {
// ...
};
Foo* GetFoo() {
return new Bar();
}
关键是,当共享库中的代码需要创建Foo
时,它将调用应用程序提供的方法来动态链接它。这可能吗?通常,应用程序依赖于共享对象提供的符号,但是共享对象是否可能取决于动态加载二进制文件中的符号?