将 Qt 4.8 与 C++ 一起使用。我正在使用在运行时加载和卸载的应用程序插件。在应用程序的生命周期中,同一个插件可能会被多次加载。其中一个插件用于Q_DECLARE_METATYPE
某些需要存储在QVariant
. 稍后重新加载插件时,旧的声明仍然指向现在卸载的库的原始内存空间。当 Qt 尝试QVariant
从重新声明的元类型创建 a 时,这会导致访问冲突。我们已经处理过类似的问题qRegisterMetaType()
:我们在加载库时注册元类型,并在卸载库之前取消注册这些类型。不幸的是,在声明而不是注册元类型时,这似乎不是一个选项。
我们如何有效地处理声明元类型的库被多次加载和卸载的情况?