在多个DLL中注册常见的Qt元类型

时间:2014-02-21 16:03:48

标签: c++ qt dll

我们有一个基于插件的GUI,它使用Qt,但不使用Qt插件。插件是根据GUI的需要动态加载的,并且可能在同一个会话中多次加载和卸载相同的插件。到目前为止,我们已经有了每个插件注册表,并在加载和卸载时取消注册其元类型,因为每个插件都有自己唯一的一组类型,需要通过信号/插槽。

在最近的重构项目之后,我们将一些类型移动到一个公共位置,以便可以在我们的两个插件中重复使用它们。我们现在面临的问题是,如果两个插件同时加载,第一个被卸载的插件将取消注册两个插件使用的元类型。这导致我们的信号/插槽连接不再在仍然加载的插件中起作用。

我认为我们可以通过对每个元类型的注册进行引用计数来解决这个问题,但这听起来有点矫枉过正。这个问题有更简单的解决方案吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,元标记注册doesn't keep an internal reference count。注册类型时,这是一个无操作。你不得不自己做引用计数,我很害怕。