【问题标题】:QT Release build DLL procedure entry point errorQT Release构建DLL过程入口点错误
【发布时间】:2012-07-26 12:08:42
【问题描述】:

我在 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 是相同的版本。我不是真正的软件人,在这里不知所措。

【问题讨论】:

    标签: qt dll build release


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

      使用 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 crashes on startup, faulting at QtCore4.dll

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 目录中有QtCore4.dll和QtGui4.dll的副本。这就是应用程序所需要的。静态链接也不起作用。我准备把这个扔给工程师,告诉他处理命令行版本。
        • @Matt 你的意思是你把你的 QtCore4.dll 放在应用程序的目录中并且仍然显示该消息吗?可能是错误的DLL。也许您从 QtCreator 的目录中获取了 DLL,但您应该从 SDK 中获取它,因为它们相同(并且您的应用程序链接到后者)。
        • 运行 Dependency Walker,并将 dll 重新复制到目录中。不知道我最初使用的是什么 dll,但现在可以使用。
        • 谢谢,我的路径中有 CMake bin 目录,并通过“dependency walker”意识到我的二进制文件正在加载那些 dll,而不是我链接的那些。
        • 谢谢,您的建议帮助了我。另一个技巧是使用“whereis”或“which”(我在 Cygwin 中有它们)之类的东西来检查使用了哪些 Qt 文件。没想到 Anaconda 的 bin 文件夹里竟然有windeployqt.exe!!!将 Qt 目录放在路径的顶部。这应该在重新安装 Qt 之前的操作清单中。
        【解决方案4】:

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

        【讨论】:

        • 但强制你在 (L)GPL 下发布。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        • 2021-03-20
        • 2023-03-23
        • 2019-04-13
        • 1970-01-01
        相关资源
        最近更新 更多