【问题标题】:Qt msvc2015 and windows kit 10 for windows 7Qt msvc2015 和 windows kit 10 for windows 7
【发布时间】:2018-07-19 17:49:36
【问题描述】:

我正在尝试移植我首先在 Linux 上开发的 Qt 项目。这是我第一次在 Windows 上进行构建,而我无法解决问题的事实可能来自一个非常明显的缺失。

到目前为止我尝试的 Windows 配置是下一个:

  • 带有 Qt 5.8 MSVC 2015、Windows Kit 10、Qt Creator 4.5 的 Windows 10
  • 带有 Qt 5.8 MSVC 2015、Windows Kit 10、Qt Creator 4.6 的 Windows 7 SP1

通过这两种配置,我获得了一个可以在主机上成功运行的可执行文件,但是当我在新安装的 Windows 10 上部署应用程序时,应用程序会启动几秒钟然后停止(/崩溃?)。但是,错误消息、恢复对话框和事件日志都没有显示任何内容。

在新安装的 Windows 7 SP1 上,我收到一条错误消息,指出找不到 CreateFile2 的入口点。我知道这个功能是从 Windows 8 开始添加的,但是我不明白为什么应用程序是用这样一个入口点构建的,尽管我在我的 .pro 文件中定义了 _WIN32_WINNT 如下:

DEFINES += "_WIN32_WINNT=0x0601"

我也尝试了 WINVER 的定义,但没有成功:

DEFINES += "WINVER=0x0601"

我假设使用this git 提供的依赖软件没有丢失任何 DLL。我还尝试了“超过折旧”的 Dependency Walker,它没有显示缺少库。

在此先感谢将拯救我的 Windowsians!

【问题讨论】:

    标签: c++ windows qt


    【解决方案1】:

    最终,我发现了问题! 问题来自我正在构建的这个外部库,然后以静态模式链接到我的最终应用程序。用正确的 _WIN32_WINNT 重建外部库后,它工作了! 希望这个话题能帮助像我一样的winnoob :)

    【讨论】:

      【解决方案2】:

      好的,我发现我的项目正在使用的静态库之一,我通过 VS 2017 编译的其中一个包含 CreateFile2 引用(使用 dumpbin.exe)。我使用正确的 _WIN32_WINNT 值重新编译了它,并且还重新编译了 Qt 项目。但是,CreateFile2 引用仍然存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-09
        • 2020-05-16
        • 1970-01-01
        • 2014-12-17
        • 2018-10-27
        • 1970-01-01
        相关资源
        最近更新 更多