【发布时间】: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.dll。0000000000A8DB11 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