问题描述:编译完成一个Qt程序后,在Qt Creator 环境中可以执行,但是单独进入build文件夹后,双击.exe文件提示 程序无法启动,缺少 Qt5Widgets.dll 文件 。
解决过程:
- 首先上网下载了 Qt5Widgets.dll 文件,放到 system32 文件目录下,再次双击 .exe 文件运行,提示 程序无法启动,缺少 Qt5Widgetsd.dll 文件。
- 初步判断系统缺少了对 Qt 的一系列 .dll 文件依赖。上网搜索如何查找可执行程序的依赖文件的方法,windows下可以使用 Dependency Walker 查找,或者使用 Process Explorer查看正在执行的线程的实时依赖。Linux下可以用 ldd 命令。
- 下载安装了 Process Explorer ,在Qt Creator 开发环境中执行程序,用 Process Explorer 查看运行进程的依赖文件,具体操作 View -> Lower Pane View -> Dlls 或者直接Ctrl + D ,点击到正在运行的 Qt 线程,可以看到有 Qt5Widgets.dll ,路径是 C:\Qt\Qt5.3.2\5.3\msvc2010_opengl\bin\Qt5Widgets.dll 。
- 设置环境变量,将 C:\Qt\Qt5.3.2\5.3\msvc2010_opengl\bin 添加到 Path 环境变量中。双击 .exe 程序运行,问题解决。
结论:编译好的可执行程序存在各种各样的依赖文件(.dll),系统中依赖文件对程序的支持需要环境变量 Path 的路径正确。以后做安装程序可能需要将各种依赖文件同程序一起打包并在安装时注册环境变量。