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 Studio Discussion :

Exécuter un bout de code seulement si compilé en 32-bit


Sujet :

Visual Studio

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 216
    Points : 88
    Points
    88
    Par défaut Exécuter un bout de code seulement si compilé en 32-bit
    Bonjour,

    J'ai un projet que je compile en 32 et 64-bit.

    Seulement, en 64-bit, je dois sauter un bout de code car j'ai un plugin qui ne fonctionne pas en 64-bit...

    Pour sauter le code je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //Coment the following line if build in x64
    #define ENABLE_PLUGIN_IN_BUILD
    Plus loin dans mon code, je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifdef ENABLE_PLUGIN_IN_BUILD
    	//moncode
    #endif
    Donc que si je compile en 32-bit, je dois décommenté la première ligne. Ensuite, lorsque je compile en 64-bit, je recommente la ligne. Cela est embêtant à la longue. Comment faire pour que ENABLE_PLUGIN_IN_BUILD soit défini automatiquement suivant que je compile en 32 et 64 bit sans avoir a commenter/décommenter la ligne chaque fois.

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    tu dois pouvoir créer des profils de compilation.
    par défaut tu as DEBUG et RELEASE

    et tu peux donc utiliser les pragme #if DEBUG, etc
    bah t'as juste à créer un profil de plus qui compilera en 32 et 64bits, tu utilises leurs noms dans le code

    #if PROFIL32
    ....


    pour créer un profil, clique sur la combo DEBUG/RELEASE et t'as un menu "configuration manager". après c'est trivial
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 97
    Points : 115
    Points
    115
    Par défaut
    Il faut que tu définisses ta constante ENABLE_PLUGIN_IN_BUILD dans le champ "Conditional compilation symbols" des propriétés de ton projet :



    En haut, tu peux indiquer sur quelle plateforme (x86 ou x64) tu veux qu'elle soit définie.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Un moyen simple de vérifier à l'exécution si tu es en 32 ou 64 bits :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (IntPtr.Size == 8) // 64 bits
    {
     
    }
    else // IntPtr.Size == 4, donc 32 bits
    {
     
    }
    Si tu préfères le gérer à la compil, le plus simple est de créer plusieurs configurations pour ton projet :
    - tu vas dans le menu Générer -> Gestionnaire de configurations, et tu crées des configurations supplémentaires (par exemple Debug64 et Release64)
    - dans les propriétés du projet, tu sélectionnes la configuration voulue et tu changes la plateforme cible (x86 pour 32 bits, x64 pour 64 bits)
    - et tu ajoutes un symbole de compilation conditionnelle "X64", uniquement dans la configuration 64 bits

    Dans ton code, tu peux maintenant faire "#if X64", et ce sera automatiquement pris en compte selon la configuration que tu auras sélectionnée pour la compilation

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    216
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 216
    Points : 88
    Points
    88
    Par défaut
    Merci pour ces réponses détaillées!
    Problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exécuter un bout de code en C
    Par Anonyme5571 dans le forum NodeJS
    Réponses: 20
    Dernier message: 15/04/2015, 13h41
  2. Impossible d'exécuter un code une fois compilé
    Par Adeel.dev dans le forum x86 16-bits
    Réponses: 12
    Dernier message: 24/05/2010, 11h55
  3. Ne pas compiler certains bouts de code
    Par martt_1er dans le forum C++
    Réponses: 11
    Dernier message: 01/06/2007, 14h32
  4. Mesurer le temps d'exécution d'un bout de code
    Par Floréal dans le forum C++
    Réponses: 4
    Dernier message: 06/04/2007, 09h46
  5. [C# 2.0] Exécution d'un bout de code lors de l'installation
    Par oodini dans le forum Windows Forms
    Réponses: 6
    Dernier message: 11/09/2006, 16h27

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