none
Problème compilation sous W7 pour WXP RRS feed

  • Question

  • Bonjour,

    je tente en vain de compiler une appli sous W7 x64 pour un PC sous WXP, avec visual C 2010.

    Sur le PC XP, le framework 4 est installé, ainsi que les redistribuable 2008,2010 & 2012.

    Sur mon PC W7, dans mon projet sur VC2010, j'ai bien choisi une cible x86, plateforme V100, bilbliothèque Runtime=/MDd.

    Lorsque je lance l'appli compilé sur W7, tout fonctionne. Sur le PC XP: "Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte...."

    Si quelqu'un a une idée... je lui en serait reconnaissant à vie.

    vendredi 2 mai 2014 14:44

Réponses

Toutes les réponses

  • "Runtime=/MDd"

    C'est du Debug, Si votre machine WinXP n'a pas VC++ d'installé, ça va pas le faire.

    "plateforme V100", c'est pour choisir le compilateur, pas la plateforme cible.

    Regardez du coté de WINVER : http://msdn.microsoft.com/fr-fr/library/6sehtctf.aspx

    >"Cette application n'a pas pu démarrer car la configuration de l'application est incorrecte...."

    Vous devez vraisemblablement utilisez un manifeste, qui doit indiquer que vous voulez la C-Runtime en Debug, si vous n' avez pas installé VC++ sur ce WinXP, c'est normal.


    Paul Bacelar, Ex - MVP VC++

    vendredi 2 mai 2014 17:36
    Modérateur
  • j'ai tente avec winver = 501 mais ça change rien. en fait je ne vois pas a quoi sert le manifeste et pourquoi devrais je installer VC++ sur le PC XP ?en tous cas merci.

    vendredi 2 mai 2014 19:42
  • Laissez votre WINVER et _WIN32_WINNT à 501, vous en aurez besoin après.

    Le manifeste permet de spécifier tout un tas de choses à l'OS sur l'exécutable.

    En particulier, pour nous, la C-Runtime utilisée par le programme.

    Or, la C-Runtime liés à l'option /MDd est la version Debug multithread en Dll, qui n'est pas fourni avec les redistribuables VC++ liée à VS.

    Pour éviter des bricolages de Dll, le plus simple et d'installer une version Release de votre application sur la machine WinXP, et d'installer les redistribuables VC++ correspondant à la version de VC++ qui a généré l'exécutable, s'il n'est pas encore installé.


    Paul Bacelar, Ex - MVP VC++

    vendredi 2 mai 2014 21:31
    Modérateur
  • ben c'est ce que j'ai fait, sauf _WIN32_WINNT (seul WINVER spécifié). pour le reste, redistribuable & version release, j'ai fait.

    Pour tout dre, cela a marché une fois. J'ai installé VS2012, compilé (en V100), et testé OK. ensuite j'ai installé l'update 4 de VS2012. Du coup j'ai carrément choisis V100_XP (tant qu'à faire). depuis plus rien, même en remettant V100. J'ai désinstallé l'update 4. Pareil. Désinstallé VS2012 puis réinstallé. Pareil. En fait dans les options il me proposait pas V100_XP avant d'avoir installé l'update 4. Désormais il me le propose toujours, malgré la désinstall de l'update 4... encore un reste qui traine qques part. Décidement je ne comprendris jamais comment microsoft est arrivé à batir une telle usine à gaz.

    Bref, voilà ou j'en suis. Pour finir, j'avais laissé mon PC en veille prolongée, pour attaquer ce matin au réveil. Et bien il est éteint ! et ne veut plus démarrer ! panne d'alim ? pb suite aux install- restauration - ré-install ??? la poisse je dirais !

    samedi 3 mai 2014 06:43
  • Pour ta machine, désolé, je ne peux pas t'aider.
    Moi, sur ma machine, cette nuit : reboot pour mise à jour de Windows, ce qui explique l'arrêt de ta machine.

    VS a toujours été un peu farceur avec ses désinstallations, comme SQL Server.

    Je commencerais par me remettre en dernière version, histoire de ne pas me battre contre des bugs déjà corrigé.

    Même en Release, tant que vous utiliserez /MDd, ça ne marchera pas sur une machine sans VS.

    Il faudrait plus d'information sur le motif du refus :
    - Pouvez-vous donner le manifeste de votre application ?
    - Vérifiez la plateforme cible avec un dumpbin dessus ?
    http://stackoverflow.com/questions/14349793/c-program-written-in-vs2012-works-w-win7-8-2008r2-2012-but-not-2003-xp-32bit

    P.S.: L'XP est 64bits ???


    Paul Bacelar, Ex - MVP VC++


    samedi 3 mai 2014 11:09
    Modérateur
  • l'alim de mon pc a cramée... elle aura passée une mauvaise nuit ! 60€ plus tard, je l'ai remplacé et me remets au boulot.

    donc je repart avec VC2012 sans l'update 4... bien que je ne pense pas que cela change grand chose.

    Je précise que je viens de recompiler avec /MD et non plus /MDd.

    voici le minifeste:

    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
        <security>
          <requestedPrivileges>
            <requestedExecutionLevel level='asInvoker' uiAccess='false' />
          </requestedPrivileges>
        </security>
      </trustInfo>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type='win32' name='Microsoft.VC90.DebugCRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
        </dependentAssembly>
      </dependency>
    </assembly>

    désolé d'être un boulet mais je ne trouve pas la commande dumpbin. Dumpbin n'est pas reconnu comme une commande valide.

    samedi 3 mai 2014 16:03
  • Dans le manifeste, c'est marqué 'Microsoft.VC90.DebugCRT' et ça c'est la C-Runtime DEBUG ;-)

    Ici, il y a quelques actuces pour choper le sale petit projet qui joue au con :

    http://social.msdn.microsoft.com/Forums/vstudio/en-US/357fb11b-78a3-4985-aee4-e5e07f0dc187/why-release-binary-manifest-file-is-having-the-microsoftvc90debugcrt-assembly-entry?forum=vcgeneral

    Dumpbin est un exécutable console qui est livré avec VS, quelque part dans un répertoire bin de l'arborescence de VS.


    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse Aurel Bera lundi 5 mai 2014 06:23
    samedi 3 mai 2014 16:17
    Modérateur
  • OK je vais jeter un oeil.

    Pour répondre à la question que j'avais zappé, le PC XP est en 32b.

    samedi 3 mai 2014 16:27
  • dumpbin est trouvé. par contre je bataille juste pour faire le dump dans un fichier texte
    samedi 3 mai 2014 16:42
  • il confirme appli 32bits, version 5.01 (mais image ver 5.00)
    samedi 3 mai 2014 16:45
  • bon j'ai trouvé la librairie qui déconnait. Je l'ai recompilé avec l'option /MD au lieu de MDd. Du coup VC90 a disparu du manifeste.

    samedi 3 mai 2014 17:01
  • je viens de recompiler mon projet et de tester sur XP... et ça marche !!!!!!!

    Un grand merci pour le coup de main, je vais pouvoir avancer. Pour terminer, je dirais que je suis en train de faire une imprimante 3D (qui fonctionne mais a besoin de réglages).

    Elle est pilotée par un SW à moi côté machine et un soft d'un autre côté PC. C'est ce soft que j'avais grand besoin de modifier. C'est maintenant possible !!!!! c'est génial, encore merci et bravo. Quel talent !

    • Marqué comme réponse Aurel Bera lundi 5 mai 2014 06:24
    samedi 3 mai 2014 17:04
  • Joli projet.

    Une vidéo qui parle de l'impression 3D aux techdays2014 de Paris

    http://www.microsoft.com/france/mstechdays/programmes/2014/fiche-session.aspx?ID=eb060bb8-8caa-46ef-bdd5-4363daa6e3e5

    Cela permet de voir ce qui se fait dans le domaine et voir si vous ne pouvez pas tirer parti de synergie et de SDK de M$.


    Paul Bacelar, Ex - MVP VC++

    samedi 3 mai 2014 17:21
    Modérateur
  • merci pour le lien
    samedi 3 mai 2014 17:53