【问题标题】:The procedure entry point could not be located in dynamic link library Qt5Cored.dll程序入口点无法位于动态链接库 Qt5Cored.dll 中
【发布时间】:2018-08-13 09:00:16
【问题描述】:

我刚刚构建了我应该修复的项目。我仔细检查了是否加载了正确的 DLL - 该项目使用 Qt 5.3.0,并且 dll 是从 5.3.0 目录加载的。我不确定问题出在哪里。我的项目是否使用了不正确的 Qt 标头?还是 DLL 构建不正确?

我正在使用 Visual Studio 2017 进行调试。DLL 也是使用 Visual Studio 构建的。我尝试了 Vidual Studio 2010,因为它是 2010 项目,但错误是一样的。

【问题讨论】:

标签: visual-studio qt dll linker


【解决方案1】:

您处于发布模式还是调试模式? QtCoded.dll 与调试配置文件相关。

另一种解释可能是您的 Qt 是如何构建的。 如果我没记错的话,Qt 是使用 msvc2015 构建的,因此您必须使用 msvc2015 来使用 Visual Studio 构建您的 exe,并且在此之前或之后无法使用 msvc 版本。 请记住,您不能将 mingw 构建的 Qt 框架与 msvc 一起使用。

换句话说,我建议您检查一下您在 Visual Studio 中使用的是哪个版本的 msvc,以及哪个版本的 Qt 框架。

问候。

【讨论】:

  • 这不是答案。更多信息的请求应在 cmets 部分提出。只有完整的答案才能作为答案发布。我看到您还没有足够的代表来发布 cmets,但这并不能免除您的这些规则。你应该阅读this question
  • 请使用答案框回答问题而不是提问。
  • 我正在使用 Visual Studio 2017 进行调试
【解决方案2】:

就我而言,问题如下:

其中一个子项目被意外配置为使用 Qt 5.6.1,而解决方案的其余部分使用 5.3.0。我通过在dependency walker中打开结果二进制发现了。

【讨论】:

    【解决方案3】:

    我刚刚在使用 QT 4 时遇到了同样的问题。

    在这篇文章中找到了解决方案:The procedure entry point could not be found

    我遇到了同样的问题,就我而言,这是因为我的计算机上安装了同一个库的两个版本。

    最后,问题是我将我的程序链接到新的 LIB 文件,而我的 PATH 指向旧的 DLL。当库版本号不包含在 LIB 或 DLL 文件名中时,很容易混合版本。

    在我的情况下,我使用的是 QtCored4.dll 和其他来自旧版本 QT 的。解决方案是直接从用于构建应用程序的 QT 安装目录复制 DLL(因为它是由我的 QTDIR 环境变量设置的):C:\Qt\4.8.7\bin 到我的应用程序目录。

    【讨论】:

      猜你喜欢
      • 2021-02-16
      • 1970-01-01
      • 2010-12-07
      • 2018-09-23
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多