在多个 DLL 中注册常见的 Qt 元类型
Posted
技术标签:
【中文标题】在多个 DLL 中注册常见的 Qt 元类型【英文标题】:Registering common Qt meta types in multiple DLLs 【发布时间】:2014-02-21 16:03:47 【问题描述】:我们有一个基于插件的 GUI,它使用 Qt,但不使用 Qt 插件。插件是根据 GUI 的需要动态加载的,同一个插件可能会在一个会话中多次加载和卸载。迄今为止,我们已经让每个插件在加载和卸载时注册和取消注册其元类型,因为每个插件都有自己独特的一组类型,它需要通过信号/插槽。
在最近的重构项目之后,我们将一些类型移到了一个公共位置,以便它们可以在我们的两个插件中重复使用。我们现在面临的问题是,如果同时加载两个插件,第一个卸载的将注销两个插件正在使用的元类型。这会导致我们的信号/插槽连接在仍在加载的插件中不再起作用。
我认为我们可以通过对每个元类型的注册进行引用计数来解决这个问题,但这听起来可能有点矫枉过正。这个问题有更简单的解决方案吗?
【问题讨论】:
【参考方案1】:不幸的是,元类型注册doesn't keep an internal reference count。注册类型时它是空操作。恐怕您必须自己进行引用计数。
【讨论】:
我希望我只是缺少一些东西,但我想没有!它是参考计数器...以上是关于在多个 DLL 中注册常见的 Qt 元类型的主要内容,如果未能解决你的问题,请参考以下文章