这个错误提示代表了程序在运行环境路径下找不到platforms目录下的qwindows.dll文件,所以将包含qwindows.dll文件的platforms目录放到exe同级目录下就可以了;
当然,你有可能因为其它QT依赖文件缺失还会报其它错误,一般情况下在exe同级目录下还需要Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll这几个文件,如果你的程序还是用其它QT库(如网络开发需要Qt5NetWork.dll)的话,建议使用Qt自带工具windeployqt运行命令: windeployqt 你的exe路径 ,如果使用了qml的话则命令为: windeployqt 你的exe路径 -qmldir 你的qml路径 ,这条命令会将相关的dll都放到exe同级目录下,不过它可能会将不必要的dll也拷贝进来,可以通过程序启动后再全选删除dll(依赖的dll被占用是删不掉了,注意QtQuick*相关目录(如果使用了qml的话)是存放依赖qml的不能删除);
如果你是使用QT编写的dll(比如为EXCEL编写的插件),那么以上方法就会有些不太合适了(总不能将QT的这么多依赖dll都放到excel.exe同级目录下吧),这个时候我们可以使用QApplication::addLibraryPath来修改依赖dll的路径,比如在DllMain的DLL_PROCESS_ATTACH分支中加入如下代码:
TCHAR cDllPath[MAX_PATH] = {};
GetModuleFileName(hModule, cDllPath, MAX_PATH); // mfc dll则将此行代码放到InitInstance中,并将hModule改为m_hInstance
QString strDllPath = QString::fromWCharArray(cDllPath);
strDllPath = strDllPath.section('\\', 0, -2);
QApplication::addLibraryPath(strDllPath);
将所有依赖dll修改到了你所生成dll的同级目录下,注意由于QtQuick*相关目录是存放依赖qml文件,不会受此段代码影响