2015-01-27 4 views
1

Я использую Windows 7 (64-разрядная версия) для разработки приложения Qt (5.3). Файлы Visual Studio создаются с помощью CMake. Это отлично работает для 32-битных и 64-разрядных двоичных файлов для Windows 7. CMake Generator для 32-разрядных - Visual Studio 12 2013, для 64-разрядных Visual Studio 12 2013 Win64.64-разрядная ошибка приложения Qt на XP 64-разрядная (но не на 64-разрядной версии Win7)

Я попытался создать двоичные файлы для Windows XP.

Я добавил эту строку в CMakeLists.txt для 32-битной версии

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 я выбрал режим Release и изменил набор инструментов платформы на Visual Studio 2013 - Windows XP (v120_xp).

Созданный 32-разрядный двоичный файл отлично работает в Windows XP 64-бит, 64-разрядные двоичные сбои с «hello-world.exe столкнулись с проблемой и должны закрыть ...» на Windows XP-64 -бит,

(EDIT: но отлично работает в Windows 7 64-бит).

Что я делаю неправильно? :(

+0

вы можете попробовать открыть его в зависимости ходунки и посмотреть, если вы «Отсутствует какая-то dll? –

+0

MSJAVA.DLL отсутствует, но все в порядке. Я установил Microsoft Visual Studio 2010 Express, импортировал исполняемый файл и начал отладчик.« Необработанное исключение в 0x00a8db11 в main.exe: 0xC000001D: нелегальная инструкция ». вызывается в 'msvcr120d.dll'. Строка' 0000000000A8DB11 vmovsd qword ptr [rsp + 10h], xmm0' подсвечивается при разборке. – Marcello90

+0

'и сменил набор инструментов платформы на' вам просто нужно добавить '-Tv120_xp' к шагу поколения cmake. Также я думаю, что вам не нужно изменять 'CMAKE_EXE_LINKER_FLAGS'. –

ответ

2

У меня была аналогичная проблема, и указать подсистему линкера не исправить Однако следующее решение работало нормально для меня.

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

 Смежные вопросы

  • Нет связанных вопросов^_^