【问题标题】:64-bit Qt application crashes on XP 64-bit (but not on Win7 64-bit)64 位 Qt 应用程序在 XP 64 位上崩溃(但不是在 Win7 64 位上)
【发布时间】:2015-01-27 23:26:45
【问题描述】:

我正在使用 Windows 7(64 位)开发 Qt (5.3) 应用程序。 Visual Studio 文件由 CMake 创建。这适用于 Windows 7 的 32 位和 64 位二进制文​​件。32 位的 CMake 生成器是 Visual Studio 12 2013,64 位的 Visual Studio 12 2013 Win64

我也尝试为 Windows XP 创建二进制文件。

我在 32 位版本的 CMakeLists.txt 中添加了这一行

SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,5.01")

这一行适用于 64 位版本

SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS,5.02")

我正在使用windeployqt 来部署 QT 依赖项。

运行 CMake 并启动生成的 Visual Studio 后,我选择了发布模式并将平台工具集更改为 Visual Studio 2013 - Windows XP (v120_xp)

创建的 32 位二进制文​​件在 Windows XP 64 位上工作正常,64 位二进制文​​件在 Windows XP-64 上崩溃并显示“hello-world.exe 遇到问题,需要关闭。...”一点,

(编辑:但在 Windows 7 64 位上运行良好)。

我做错了什么? :(

【问题讨论】:

  • 你可以尝试在dependency walker中打开它,看看你是否缺少一些dll?
  • MSJAVA.DLL 丢失但没关系。我安装了 Microsoft Visual Studio 2010 Express,导入了可执行文件并启动了调试器。 Unhandled exception at 0x00a8db11 in main.exe: 0xC000001D: Illegal Instruction. 被抛出 msvcr120d.dll0000000000A8DB11 vmovsd qword ptr [rsp+10h],xmm0 行在反汇编中突出显示。
  • and changed the platform toolset to 你只需要在cmake生成步骤中添加-Tv120_xp。另外我认为你不需要修改CMAKE_EXE_LINKER_FLAGS
  • 是的,我添加了 -Tv120_xp。 :) 这适用于 Windows XP 上的 32 位二进制文​​件,64 位二进制文​​件仍然崩溃。
  • 试试这个小项目:github.com/forexample/qt-cmake/tree/master/TextFinder 安装程序在我的 WinXP-64 上运行良好。

标签: visual-studio qt visual-studio-2013 cmake qt5.3


【解决方案1】:

我遇到了类似的问题,为链接器指定子系统并没有解决它。但是,以下解决方案对我来说效果很好:

ADD_CUSTOM_COMMAND(
    TARGET my_target
    POST_BUILD
    COMMAND editbin my_target.exe /SUBSYSTEM:WINDOWS,5.01 /OSVERSION:5.1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多