我正在使用带有显式链接的共享库(使用dlopen
加载共享库),以便在C ++中实现插件模式。
是否可以定义一个指向共享库中定义的类的构造函数的函数指针,或者我必须在共享库中定义工厂方法,它将从共享库中实例化(并初始化)一个类的对象?当然,在我的主应用程序中,我将定义一个指向工厂方法的函数指针,该方法将返回我需要的类的实例。
干杯
答案 0 :(得分:6)
答案 1 :(得分:1)
使用dlsym()获取指针时,您需要注意名称错位问题。依靠某种特定的重整方法并不是一个好主意,它们太多样了。因此,唯一合理的做法是将您的插件接口公开为extern“C”{...},并在构造函数上使用工厂函数包装器。