Подтвердить что ты не робот

Xxxxxx.exe не является допустимым приложением Win32

У меня есть небольшой проект C/С++ в Visual Studio 2012 RC

Эти приложения анализируют argv, а затем вызывают другой .exe файл с ShellExecute

Мое приложение отлично работает на Windows7, но в Windows XP x86 trhows Не является допустимой ошибкой приложения Win32.

Я скомпилировал его с помощью Mutli-thread (/MT) и платформы Win32

Это мой #includes

#include <string>
#include <iostream>
#include <Windows.h>
#include <fstream>
#include <cstdio>
#include <vector>
#include <windowsx.h>
#include <shlobj.h>
#include <stdio.h>
#include <tchar.h>
#include <direct.h>

Спасибо

4b9b3361

Ответ 1

Приложения VS 2012 не могут запускаться под Windows XP.

Смотрите блог VС++ о том, почему и как заставить его работать.

Кажется, это поддерживается/возможно с февраля 2013 года. См. noelicus ниже о том, как это сделать.

Ответ 2

Это февраль 2013 года, и теперь я могу настроить XP на VS2012, установив:

Свойства проекта → Общие → Набор инструментов для платформы:

Visual Studio 2012 - Windows XP (v110_xp)

Вам необходимо будет перераспределить библиотеки msvcp110.dll с вашим приложением, которые можно найти здесь: "<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"


Обновление Aug 2015 с помощью Visual Studio 2015

Кажется, теперь есть выбор. Я смог скомпилировать приложение в VS2015 с помощью параметра Visual Studio 2015 - Windows XP (v140_xp). Чтобы запустить его на Win XP, мне пришлось развернуть (копировать вместе с приложением) msvcr100.dll для сборки Release и msvcr110.dll и msvcr100d.dll для сборки Debug (обратите внимание, что есть разница в числах 100 и 110, также debug lib msvcr100d.dll не могут быть распространены) Ориентация на Windows XP с Visual Studio 2015

Ответ 3

Существует как минимум два решения:

  • Вам необходимо установить Visual Studio 2010, затем из Visual Studio 2010, View → Solution Explorer → Щелкните правой кнопкой мыши по вашему проекту → Выберите "Свойства" в контекстном меню, вы получите окна "название вашего проекта" Страницы свойств → Свойства конфигурации → Общие → Набор инструментов платформы, выберите "Visual Studio 2010 (v100)".
  • Вам необходимо Обновление Visual Studio 2012 1, описанное в Ориентация на Windows XP с помощью С++ в Visual Studio 2012

Ответ 4

В то время как ответ seleted был прав назад, а затем noelicus дал правильное обновление в отношении набора инструментов платформы v110_xp, есть еще одна проблема, которая могла бы продуцировать это поведение.

Заметка о проблеме уже была опубликована mahesh в его комментарии, и я хотел бы подчеркнуть это, поскольку я провел пару дней, пытаясь найти его, а затем нашел его сам.

Итак, если у вас есть пробел в "Свойства конфигурации → Линкера → Система → Подсистема", вы по-прежнему получите ошибку "недействительной версии Win32" на XP и Win2003, а на Win7 она работает без этой досадной ошибки. Ошибка исчезла, как только я поставил подсистему: console.

Ответ 5

Для меня это помогло: 1. Свойства конфигурации/Общие/Platform Toolset = Windows XP (V110_xp) 2. Определения препроцессора C/С++, добавьте "WIN32" 3. Linker/System/Минимальная требуемая версия = 5.01

Ответ 6

У меня была такая же проблема на Windows XP при запуске приложения, построенного со статической версией Qt 5.7.0 (MSVC 2013).

Добавление следующей строки в файл проекта .pro разрешило его:

QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01

Ответ 7

Я считаю, что эта ошибка также может быть запущена, если ваш проект нацелен на версию фреймворка, которая не установлена ​​на сервере, на котором вы развертываете.

Ответ 8

У меня возникла эта проблема при запуске 32-битного консольного приложения VS2013 в PowerShell, запуск его в cmd не вызвал этой проблемы.