programing

xxxxxx.exe는 올바른 Win32 응용 프로그램이 아닙니다.

css3 2023. 7. 4. 22:04

xxxxxx.exe는 올바른 Win32 응용 프로그램이 아닙니다.

Visual Studio 2012 RC에 작은 C/C++ 프로젝트가 있습니다.

이 응용 프로그램은 argv를 구문 분석한 다음 다른 .exe 파일을 호출합니다.ShellExecute

Windows 7(윈도우 7)에서는 응용 프로그램이 완벽하게 작동하지만 Windows XP(윈도우 XP) x86에서는 올바른 Win32 응용 프로그램 오류가 아닙니다.

멀티스레드(/MT) 및 Win32 플랫폼으로 컴파일했습니다.

이것은 나의 # 포함입니다.

#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>

감사해요.

2013년 2월에 다음과 같이 설정하여 VS2012의 XP를 타깃으로 삼을 수 있습니다.

프로젝트 속성 -> 일반 -> 플랫폼 도구 집합:

Visual Studio 2012 - Windows XP(v110_xp)

msvcp110.dll 라이브러리 등을 응용 프로그램과 함께 재배포해야 합니다. 이 라이브러리는 다음과 같습니다."<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"


Visual Studio 2015로 2015년 8월 업데이트

지금은 꽤 많은 선택지가 있는 것 같습니다.VS2015에서는 Visual Studio 2015 - Windows XP(v140_xp) 설정을 사용하여 애플리케이션을 컴파일할 수 있었습니다.Win XP에서 실제로 실행되도록 하려면 릴리스 빌드용으로 msvcr100.dll을 배포(애플리케이션과 함께 복사)하고 디버그 빌드용으로 msvcr110.dllmsvcr100d.dll을 배포해야 했습니다(숫자 100과 110에 차이가 있으며 debug libscr100d.dll도 재배포할 수 없습니다).

VS 2012 애플리케이션은 윈도우즈 XP에서 실행할 수 없습니다.

작동하는 이유와 방법은 이 VC++ 블로그를 참조하십시오.

2013년 2월부터 지원/가능할 것으로 보입니다.방법에 대해서는 아래의 노엘리쿠스 답변을 참조하십시오.

선택한 답변이 올바른 시간 전이고 neelicus가 v110_xp 플랫폼 툴 세트에 대해 올바른 업데이트를 제공했지만 이러한 동작을 발생시킬 수 있는 문제가 하나 더 있습니다.

mahesh는 이미 그의 댓글에 이슈에 대한 메모를 올렸고, 저는 며칠 동안 고군분투하다가 혼자 찾았기 때문에 이것을 강조하고 싶습니다.

따라서 "Configuration Properties -> Linker -> System -> Subsystem"에 공백이 있더라도 XP 및 Win2003에서는 "Not valid Win32 app" 오류가 발생하지만 Win7에서는 이러한 성가신 오류 없이 작동합니다.하위 시스템 콘솔을 넣자마자 오류가 사라졌습니다.

두 가지 이상의 솔루션이 있습니다.

  1. Visual Studio 2010을 설치한 다음 Visual Studio 2010의 View -> Solution Explorer -> 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다. 상황에 맞는 메뉴에서 Properties를 선택하면 "당신의 프로젝트 이름" Properties Pages -> Configuration Properties -> General -> Platform Toolset 창이 나타납니다. "Visual Studio 2010 (v100)"
  2. Visual Studio 2012의 Windows XP Targeting with C++에 설명된 Visual Studio 2012 업데이트 1이 필요합니다.

이것이 도움이 되었습니다. 1. 구성 속성/일반/플랫폼 도구 집합 = Windows XP(V110_xp) 2. C/C++ 프리프로세서 정의, "WIN32" 추가 3. 링커/시스템/최소 필요 버전 = 5.01

정적 버전의 Qt 5.7.0(MSVC 2013)으로 빌드된 애플리케이션을 실행할 때 Windows XP에서 동일한 문제가 발생했습니다.

프로젝트의 .profile에 다음 행을 추가하면 해결되었습니다.

QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01

프로젝트가 배포할 서버에 설치되지 않은 프레임워크 버전을 대상으로 하는 경우에도 이 오류가 발생할 수 있습니다.

powershell에서 VS2013 32비트 콘솔 애플리케이션을 시작하는 동안 이 문제가 발생했습니다. cmd로 시작해도 이 문제가 발생하지 않았습니다.

언급URL : https://stackoverflow.com/questions/11305633/xxxxxx-exe-is-not-a-valid-win32-application