c++ - QImage@@QEAA@$$QEAV0@@Z 无法位于 dll 中

标签 c++ qt opencv

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

**对于这个问题的上下文,有问题的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

感谢您的帮助!

最佳答案

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

关于c++ - QImage@@QEAA@$$QEAV0@@Z 无法位于 dll 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57631383/

相关文章:

qt - 计算两个日期之间的天数

Python OpenCV putText() 显示(非ascii、unicode、utf)字符符号

c++ - OpenCV:加速 EM 算法预测

c++ - 尝试访问结构中的 map 时程序卡住

c++ - 尝试构建 muParser:错误:'std::basic_ostream 的显式实例化但没有可用的定义

c++ - 我可以通过 QtService 编写(Windows 或 Linux)服务吗?

python - 为 python 包装 c++ 类(使用 opencv),给出 "undefined symbol"

c++ - 如何模拟 alignas(T)?

c++ - 如何将文件读入元组 vector ?

c++ - 问题在C++中打印对的优先级队列的所有值