DLL中找不到QImage @@ QEAA @ $$ QEAV0 @@ Z

时间:2019-08-23 18:29:45

标签: c++ qt opencv

我有一个QtCreator程序,可以在Linux和Windows上运行。该程序在其他开放源代码库上使用Qt,OpenCV(在这里不是问题。)我的问题是,当我尝试在没有IDE的情况下运行exe时,QImage有一些未解决的问题。

**对于此问题,有问题的exe称为“ project.exe”

我试图将project.exe Qt5Gui.dll(因为QImage放在其中)都放在了Dependenciy Walker中。令我惊讶的是,project.exe缺少标题中错误的完全相同的功能。但是,对于Qt5Gui.dll,DLL中没有缺少相同的功能。

这是Qt在.pro文件中包含和使用的内容

QT += core gui

这里的计划是在Windows上具有不带IDE(Qt Creator)的可运行应用程序。为了做到这一点,我在过去为许多其他Qt应用程序做了这些精确的步骤。这是一个批处理脚本:

mkdir build
cd build

call "%path_to_visual_studio%\VC\Auxiliary\Build\vcvarsall.bat" x64
call "%path_to_qt%\msvc2017_64\bin\qmake.exe" path\to\project.pro -spec win32-msvc "CONFIG+=qtquickcompiler" && "%path_to_qt%\Tools\QtCreator\bin\jom.exe"  -f Makefile.Release
call "%path_to_qt%\msvc2017_64\bin\windeployqt.exe" project.exe

完成此操作后,Qt的windeployqt.exe添加了所​​有必需的Qt,然后添加了opencv DLL,此时一切正常。但是,当我尝试运行project.exe时,即出现错误:

The procedure entry point
??0QImage@@QEAA@$$QEAV0@@Z could not be located in the dynamic link library
C:\Path\to\project.exe

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

该问题可能是由不同的Qt dll(使用不同的编译器构建)引起的。使用ProcessExplorer(procexp.exe)或类似程序查看从IDE内部启动时哪个文件夹中的Qt5Gui.dll使用您的应用程序的确切位置。然后使用search everything(voidtools)查找名称相似的dll。重命名其他文件夹,然后尝试重新启动/构建。

答案 1 :(得分:1)

我在另一个具有相同配置的Windows框上使用相同的确切脚本对其进行了编译,并且可以在那个窗口上工作...

我认为可以肯定地认为问题出在我的Qt安装上。