Qt应用程序部署不起作用。缺少入口点和dll

问题描述 投票:1回答:1

在过去的几个月里,我使用Qt-Creator版本4.7.0,Qt版本5.11.1(开源版本)创建了一个项目。

现在我尝试按照Qt doc部署它,并使用MSVC2017-64bit编译器构建项目,然后在生成的可执行文件上运行windeployqt.exe。

当程序完成将必要的dll复制到文件夹后,我试图运行可执行文件时出现警告:

入口点? eventFilter @ QAbstractItemView @@ MEAA_NPEAVQObject @@ PEAVQEvent @@@在DLL“my / project / path / releasefolder / project.exe”中找不到Z.

在我看来,我在项目中使用的Qt-Objects出了问题,但我找不到任何东西,因为它在Qt-Creator中仍能完美运行。

一想到它可能是由于编译器存在问题,所以我将其更改为mingw32,我也尝试以相同的方式部署。但不知何故,在这种情况下,警告消失了,但是即使windeployqt.exe应该已经完成​​,但很多dll仍然丢失了。而且我也无法在硬盘上的任何地方找到它们。我也试过第三个编译器,但问题并没有消失。

我在网上搜索,发现人们在Qt dll中缺少一个入口点或者一般都没有Qt-Dll,但是没有发现任何与我的案例相关的问题。

我还尝试了每个可执行文件上的Dependency Walker,但是它发现了更多丢失的dll,这让我相信可执行文件在某种程度上被破坏了所以我一次又一次地尝试它,但不幸的是没有成功。

有人有任何想法,为什么会发生这种情况,或者对我有什么建议?也许我应该在我的项目中改变一些东西,即使它在IDE中工作正常。我只需要一种以任何方式部署我的Qt项目的方法。

编辑:使用Qt Creator中的桌面工具包与MSVC2017一起构建所描述的警告。使用Mingw32(桌面套件)和MSVC2017使用Qt Creator中的UWP套件构建以下Dll丢失,我在硬盘上找不到任何地方:MSVCP140_APP.dll

编辑2:我最终下载了所需的DLL,以某种方式让它工作,但它仍然无法正常工作。一个构建,需要dll现在启动但立即关闭自己,另一个构建突然警告我缺少程序入口点。

编辑[解决方案]:我让Qt Creator创建一个全新的项目,并复制旧项目中的所有文件。之后我只将所有的dll文件复制到文件夹中,然后才有效。

c++ qt dll deployment entry-point
1个回答
1
投票

而不是依赖windeploy,手动添加DLL。我假设你使用mingw构建了项目。假设您使用的是Qt 5.11.1,请转到C:\ Qt \ Qt5.11.1 \ 5.11.1 \\ bin \并复制所有dll文件并粘贴到可执行文件夹中。同时从plugins文件夹(在/ plugins中)复制所有目录并粘贴到您的文件夹中。现在运行应用程序,不要关闭应用程序。现在删除可执行文件夹中的所有文件。将删除未使用的那个,剩下的就剩下了。我假设你在目标计算机上这样做。这可能有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.