20

我在 Qt Creator 中构建了一个使用 CImg 进行图像处理的应用程序。当我从内部 IDE 运行它时它运行良好,但是如果我尝试从它的目录启动它,它会引发以下错误。

The procedure entry point ??4QString@@QAEAAV0@$$QAV0AAZ could not be located 
in the dynamic link library QtCore4.dll

一切都指向安装了多个版本的 DLL。我发现我的 Xilinx IDE 使用 Qt 库,但有问题的 DLL 是相同的版本。我不是一个真正的软件人,在这里不知所措。

4

4 回答 4

19

即使库版本相同,它们也可能不兼容。例如,它们是用不同的配置编译的,比如有或没有 STL 支持、OpenGL、SQL 驱动程序......

PATH修复它的最简单方法应该是在环境变量的开头移动 Qt SDK 的路径。这样,每当您运行需要 Qt 库的可执行文件时,它将加载 SDK 附带的那些(在 中找到的第一个PATH),除非在可执行文件的目录中已经存在 QtCore4.dll、QtGui4.dll... 的副本。出于这个原因,如果您重新分发您的应用程序,您可能还必须在其目录中提供库。

另一种选择是静态链接,但您需要在 (L)GPL 许可下提供源代码。

于 2012-07-28T08:40:09.763 回答
0

使用 DependencyWalker 列出加载 qtcore4.dll 的位置。我有同样的问题 - DependencyWalker 告诉我 qtcore4.dll 是从 c:\windows\system32 加载的 - 但这个文件夹中没有 qtcore4.dll。

注意:在 Windows 7 64 位 c:\windows\SysWOW64 上“映射”为 c:\windows\system32。在这个文件夹中,我找到了 dll - 我重命名了 dll,问题就解决了。

在这里查看这个答案: Qt fresh Gui application crashing on startup, faulting at QtCore4.dll

于 2014-02-18T09:38:17.483 回答
-1

静态链接库消除了这个问题。

于 2012-07-27T19:21:06.403 回答
-1

有同样的问题 [Windows 10, Qt5 + Mingw] 并且即使在我复制了所有必要的 Qt5 .dll 文件之后也出现了同样的错误。

DependencyWalker 为我崩溃了,所以我通过复制文件进行了反复试验。

原来我也需要复制 libstdc++-6.dll。

这表明可能还有其他库 - 除了 Qt 库 - 您需要复制。

于 2019-11-10T15:45:28.713 回答