一些内容记录,不是系统分析
一、ShowWindow调用
创建窗口 - Win32 apps | Microsoft Learn了解如何在此示例模块中为第一个 Windows 程序创建窗口作为第一步。https://learn.microsoft.com/zh-cn/windows/win32/learnwin32/creating-a-window 首先看win32 sdk,显示窗口是调用了ShowWindow接口,那么qt在显示窗口时也可能调用了这个接口
之前下载了qt源码编译
于是全局搜索ShowWindow,果然查找了到了一堆调用点
简单粗暴,每个地方都打上断点,调试,命中
qwidget的show最后确实有调到win32 api的 ShowWindow
跳进去的函数内容其实就是qwindows.dll的内容,有对应的qt project,可以打开查看
那么这个dll怎么加载的呢,看了下qt5widgets、qt5core的依赖模块也没有它,结合插件形式,可能是显式加载
二、平台插件库加载
This application failed to start because no Qt platform plugin could be initialized.
之前碰到过这个问题,拷贝 plugins\platforms文件夹内容就可以解决。
跟踪代码,发现还是通过调用win32 api的
LoadLibrary
显式加载了相关dll