关于QPluginLoader的加载和卸载

    我们知道Qt的插件系统中通过QPluginLoader类来动态加载插件库,但对于具体的动态加载和卸载机制不是很清楚,因此花了点时间详细研究了QPluginLoader的源码,对于QPluginLoader类有些新的认识,记录如下,供参考。

    1. QPluginLoader在后台是通过QLibraryPrivate类完成加载库操作的,这与QLibrary类是一样的;

    2. 多个QPluginLoader的实例如果加载同一个插件库,那么其后台的库是同一个,也就是说多个QPluginLoader的实例并不会导致同一个动态库被多次加载;

    3. 在QPluginLoader对象被析构时,其加载的动态库也不会被卸载;

    4. QPluginLoader的load函数会在执行instance时自动执行,一般不需要直接执行;(参考文档中有提到)

    5. 卸载插件需要调用unload函数执行,但如果有多个实例加载(load)了同一个插件库,那么只有在最后一个实例执行unload后才能将动态库卸载,前几个实例的unload方法都会返回false,动态库也不会被卸载。

猜你喜欢

转载自blog.csdn.net/lutx/article/details/7268378