Qt中插件如何访问宿主程序提供的一些对象及函数?

假设现在有两个项目,一个产生宿主程序(host),另一个产生一个dll文件(插件),提供一个接口.

宿主程序使用QPluginLoader将dll加载进入内存,使用instance方法获取到dll提供的实例化的一个接口对象.

这时候出现问题了,假设我在宿主程序中有一个连接数据库的单例对象,那么在插件项目中如何才能访问这个对象呢?

现在相当于是已经实现了宿主对插件对象的访问,但是如何才能反过来访问呢?

之前想过一种思路就是调用instance的方法将数据库的对象给他传进去,但是这样的话相当于操作数据库的代码在程序中出现了两遍,感觉不妥...

阅读 3.6k
1 个回答

如果你直接暴露instance,自然操作得两边各自持有一份。让两边都直接操作它不太合理。应当只有一边有直接操作权,另一边只允许访问一些有限的高级的接口。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题