xxxxxx.exe non è un’applicazione di Win32 valida

Ho piccolo progetto C/C++ in Visual Studio 2012 RC

Questa applicazione analizza il argv e poi chiama un altro .file exe con ShellExecute

La mia applicazione funziona perfettamente su Windows 7, ma su Windows XP x86 trhows non È un’applicazione di Win32 valida errore.

Ho compilato con il Multi-thread(/MT) e la Piattaforma Win32

Questo è il mio #include

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

Grazie

  • Hai fatto compilare un x64 applicazione?
  • È “un altro exe” un’applicazione a 64 bit? Hai ricompilarlo per il tuo ambiente a 32 bit?
  • Questa è veramente la fine del commento, hai controllato se "Configuration Properties -> Linker -> System -> Subsystem" è impostato ? Se è vuota, impostare l’opzione appropriata, ricostruire e controllare il file eseguibile su XP.
  • Dopo aver controllato il mio commento di cui sopra, se ancora lo stesso errore, installare l’aggiornamento MSFT recentemente rilasciato.
InformationsquelleAutor user525717 | 2012-07-03

 

8 Replies
  1. 45

    VS 2012 le applicazioni non possono essere eseguiti in Windows XP.

    Vedere questo VC++ blog sul perché e come farlo funzionare.

    Sembra essere supportato/possibile dal mese di Febbraio 2013. Vedere noelicus risposta qui sotto su come.

    • Sì, ma finalmente. Sto aggiungendo questo commento, per coloro che potrebbero vedere la risposta il prossimo anno, dove dovrebbe essere possibile.
    • Questo problema sembra apparire in RTM troppo.
    • Utile per i futuri utenti. Aggiornamento rilasciato per supportare XP
  2. 50

    È Feb 2013, e ora posso target XP in VS2012 impostando:

    Proprietà del progetto -> Generale> Piattaforma set di Strumenti a:

    Visual Studio 2012 – Windows XP (v110_xp)

    È necessario ridistribuire il msvcp110.dll librerie et al, con la vostra applicazione, che sono disponibili qui: "<Program Files>\Microsoft Visual Studio 11.0\VC\redist\x86\Microsoft.VC110.CRT\"


    Aggiornamento Agosto 2015 con Visual Studio 2015

    Ci sembra essere piuttosto un vasta gamma. Sono riuscito a compilare l’applicazione in VS2015 utilizzando Visual Studio 2015 – Windows XP (v140_xp) impostazione. Per rendere effettivamente eseguire su Win XP ho dovuto distribuire (copia fianco di applicazione) msvcr100.dll per il Rilascio di costruire e msvcr110.dll e msvcr100d.dll per build di Debug (notare che c’è una differenza di numeri 100 e 110, anche di debug lib msvcr100d.dll non può essere redistributable)
    xxxxxx.exe non è un'applicazione di Win32 valida

    • Che v utile grazie. Vale la pena notare che non è necessario ridistribuire la dll se vai a c/C++ => la Generazione di Codice => Libreria di Runtime e scegliere di compilare il tuo crt. E. g. con l’opzione /MT.
    • Ora MSVC il 2015 e il 2017 non supportano il collegamento statico per la CRT.
  3. 6

    Mentre selected risposta era proprio tempo fa, e poi noelicus ha dato corretto aggiornamento in materia di v110_xp piattaforma set di strumenti, c’è ancora un’altra questione che potrebbe produse questo comportamento.

    Una nota sul problema è stato già postato da mahesh nel suo commento, e vorrei sottolineare questo, come ho trascorrere un paio di giorni lottano e poi trovare da me.

    Quindi, se si dispone di un vuoto in “Configurazione delle Proprietà -> il Linker -> Sistema -> Sottosistema” si continua a ottenere la “non applicazione di Win32 valida” errore di XP e Win2003 mentre su Win7 funziona senza questo fastidioso errore. L’errore scompare non appena ho messo sottosistema:console.

    • Ho avuto bit deselezionando Linker/Sistema/Sottosistema di pensare che sarebbe caduta per impostazione predefinita. Funziona, ma solo su Vista+. Pause XP con il “Non è un applicazione di Win32 valida” errore. Grazie @andrey per la documentazione.
  4. 5

    Ci sono almeno due soluzioni:

    1. È necessario Visual Studio 2010, quindi da Visual Studio 2010, Visualizza -> Soluzione Explorer -> fare Clic Destro sul progetto -> Scegliere Proprietà dal menu di scelta rapida, si otterrà il windows “nome del progetto” Pagine di Proprietà -> Proprietà-Configurazione -> Generale> Piattaforma set di strumenti, scegliere “Visual Studio 2010 (v100)”.
    2. È necessario il Visual Studio 2012 Update 1 descritto in Windows XP Targeting con C++ in Visual Studio 2012
    • Visual Studio 2012 Update 2012 non sembrano risolvere questo problema. Microsoft ha rilasciato una correzione di sicurezza? Sto usando un progetto QT quindi non posso impostare la Piattaforma di Strumenti di vedere questa domanda: stackoverflow.com/questions/14657766/… ), quindi sono un po ‘ bloccato.
    • Ciao, io non sono a conoscenza di QT, perché non si può cambiare la Piattaforma di Strumenti?
    • QT progetti hanno una diversa “Proprietà Pagina” rispetto al normale progetti di Visual Studio. In sostanza si usa qmake.exe per generare una serie di makefile. Ho provato a seguire le istruzioni della riga di comando su “blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx” ma non è lavoro per me. Se trovo una soluzione vi posterò la domanda di cui sopra. Cheers
    • Ho risolto i miei problemi, la riga di comando modifiche per QT sono: win32 { QMAKE_LFLAGS += /SUBSYSTEM:CONSOLE,5.01 QMAKE_CXX += /D_USING_V110_SDK71_ LIBS *= -L”%ProgramFiles(x86)%/Microsoft SDKs/Windows/7.1 A/Lib” INCLUDEPATH += “%ProgramFiles(x86)%/Microsoft SDKs/Windows/7.1 Un/Include” }
  5. 1

    Per me, questo ha aiutato:
    1. Configurazione delle proprietà/Generale/Piattaforma set di Strumenti = Windows XP (V110_xp)
    2. C/C++ le definizioni del Preprocessore, aggiungere “WIN32”
    3. Linker/Sistema/versione Minima richiesta = 5.01

  6. 1

    Ho avuto lo stesso problema su Windows XP quando si esegue un’applicazione creata con una versione statica di Qt 5.7.0 (MSVC 2013).

    Aggiungendo la seguente riga al progetto .pro file risolto:

    QMAKE_LFLAGS_WINDOWS = /SUBSYSTEM:WINDOWS,5.01
  7. -1

    Credo che questo errore può anche essere generata se il tuo progetto è di targeting una versione di framework non è installato sul server di distribuzione.

  8. -1

    Ho avuto questo problema, durante il lancio di un VS2013 console a 32 bit applicazione in powershell, lancio il comando ” cmd ” non è problema di questo problema.

Lascia un commento