IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

[Win32] Application Win32 non valide


Sujet :

Visual C++

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    F�vrier 2014
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2014
    Messages : 1
    Par d�faut [Win32] Application Win32 non valide
    Bonjour � tous,

    Je viens vous poser une question peut-�tre ridicule mais � la quelle je n'ai trouv� aucune solution.

    Alors que je programm� sur Code::Block, j'ai du pass� sur Visual Studio 2013 pour des raisons pratiques.

    Lorsque que je compile sous Code::Block (mingw32-gcc.exe) le fichier binaire g�n�r� fait environ 1MB et s'ex�cute sur n'importe quelle version de Windows (XP et Sup) sans aucun probl�me.
    Cependant lorsque je compile sous Visual Studio, le fichier binaire ne fait plus que 35KB et ne s�ex�cute plus que sous Windows 8.

    L'erreur est la suivante sous Windows XP: "XY.exe n'est pas une application Win32 valide".

    Sous Windows Vista et Windows 7 il manque des DLL et donc le programme ne fonctionne pas (m�me en ajoutant les dll manquantes le programme ne peut s'initialiser).

    Je compile sous Windows 8.1 x64 alors je suppose que Visual Studio compile uniquement le Code::Source pour la version de Windows en cours d'utilisation.
    C'est une application Console qui utilise l'API Win32 pour lister les processus en cours.

    Je ne vois pas bien d'o� peut venir le probl�me, comment configurer Visual Studio pour qu'il compile le fichier binaire avec les dll n�cessaires au fonctionnement du programme sur Windows XP+ et non juste sur Windows 8 ?

    Merci d'avance,
    GalaxyUser

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Quelle version de Visual Studio 2013 utilises-tu?

    Et quelles valeurs (_WIN32_WINNT, NTDDI_VERSION, etc.) passes-tu quand tu compiles?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par d�faut
    Bonjour

    Je tiens � m'excuser pour le d�lais de r�ponse, je n'avais tout simplement pas vu que tu avais r�pondu.
    C'est la version ultimate de Visual Studio 2013.

    J'ai uniquement un define dans mon code:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    #define _WIN32_WINNT 0x0501
    Un pragma:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    #pragma comment(lib,"Psapi.lib")
    Merci encore et � bient�t

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je suppose que tu compiles bien pour une architecture x86? (plate-forme Win32, Desktop, Project Properties -> Linker -> Advanced -> Target Machine = MachineX86 (/MACHINE:X86))...

    Regarde si tu n'as pas moyen d'examiner le header de ton exe dans un �diteur hexad�cimal, pour voir les valeurs de machine et de version attendue de Windows...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Le #define correspond � une plateforme cible WinXp et Win2003.
    C'est bien mais il a le probl�me de ne d�finir cette valeur que dans les sources o� il est inclus et � partie de ce #define.
    Pour ce genre de r�glage, il faut mieux utiliser les constantes de compilation (/D) http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx (section : "Setting WINVER or _WIN32_WINNT").

    Le "#pragma comment(lib,...", c'est pas top pour la maintenabilit�, surtout avec un spectre �tendu de version de Windows � supporter.
    Pr�f�rez utiliser les options du projet, dans les options du linker, pour indiquer la d�pendance avec cette librairie.

    Regarde si tu n'as pas moyen d'examiner le header de ton exe dans un �diteur hexad�cimal, pour voir les valeurs de machine et de version attendue de Windows... .
    Heu, il y a un peu plus user friendly comme outil, comme DIMPBIN /Headers.
    http://support.microsoft.com/kb/177429/fr

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2
    Par d�faut
    Bonsoir � tous,

    Premi�rement merci pour vos r�ponses. Malheureusement rien n'a chang� mon fichier fait toujours 35KB et impossible de le lancer sur un Windows plus ancien.

    Je vais essayer sur Visual Studio Express C++ 2012 et voir si le probl�me est le m�me.
    Je reviendrai vers vous dans tous les cas pour vous donner une r�ponse.

    A bient�t,

  7. #7
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 503
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 503
    Par d�faut
    Cela marchera peut-�tre avec VS2012, mais cela tombera en marche.
    Vous devez ABSOLUMENT maitriser ce que vous faites.

    Appliquez nos recommandations en terme de d�claration de constante de compilation et d'ajout de r�f�rences aux lib.
    Ce n'est pas une option, c'est le seul moyen FIABLE de g�n�rer de mani�re SURE un ex�cutable pour une plateforme cible donn�e.

    L'utilisation de DUMPBIN, c'est une action qui prend quelques secondes pour avoir une certitude sur la plateforme cible de l'exe. QUELQUES SECONDES!

  8. #8
    Membre chevronn� Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par d�faut
    Par default Visual Studio (toutes les versions?) compile en MD (Multi-threaded DLL), ce qui implique l'installation sur la machine d�ex�cution les runtimes re-distribuable de ton complilo, ou compiler en MT (Multi-threaded) est la l'exe est plus gros!
    http://www.microsoft.com/fr-fr/downl....aspx?id=30679

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Mais un probl�me de runtime manquant ne fait pas une erreur de ce type; �a fait une erreur SxS ou une erreur de DLL manquante.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Application Win32 non valide
    Par NiCLO dans le forum D�buter
    R�ponses: 6
    Dernier message: 23/04/2015, 20h27
  2. [WS 2003] explorer.exe application win32 non valide
    Par azorol dans le forum Windows Serveur
    R�ponses: 6
    Dernier message: 22/10/2013, 09h06
  3. VS 2012 - application win32 non valide sous XP
    Par kad83 dans le forum Visual Studio
    R�ponses: 0
    Dernier message: 25/07/2013, 23h33
  4. update.exe is not a valid WIN32 application !!!!
    Par fm077 dans le forum Windows XP
    R�ponses: 1
    Dernier message: 03/11/2005, 15h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo