涉及到的两个程序
1. 一个不使用QT的exe程序,叫做without_qt.exe
2. 一个使用QT的dll,叫做with_qt.dll
在with_qt.dll中提供一个按钮叫做btn_ICO,点击这个按钮之后,使用QIcon类加载ico(或者png,svg)格式的图片,此时会导致qt自动加载imageformats目录下的插件,比如qico4.dll,qgif4.dll等
测试1:
1. without_qt.exe调用LoadLibrary,加载with_qt.dll,并调用with_qt.dll提供的接口创建一个窗口
2. 关闭窗口,通过FreeLibrary卸载with_qt.dll
3. 通过Process Explorer观察,会发现QtCore和QtGui会被卸载
测试2:
1. without_qt.exe调用LoadLibrary,加载with_qt.dll,并调用with_qt.dll提供的接口创建一个窗口
2. 点击按钮btn_ICO
3. 关闭窗口,通过FreeLibrary卸载with_qt.dll
4. 通过Process Explorer观察,会发现QtCore和QtGui,以及加载的qico4.dll,qgif4.dll等都不会被卸载
有大神知道QT的这个机制吗,以及如何让with_qt.dll卸载的时候把QT的库也都一起卸载了。