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

Lazarus Pascal Discussion :

Changer Win32 en Win64 [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Changer Win32 en Win64
    Bonjour à) toutes et à tous,

    Comme tout changement de machine, OS, .. amène son lot de perturbations, en voilà une : Refus de compilation pour cause de balise {$IFDEF WIN32}

    Dans un fichier .pas que j'avais fait, je l'ai changé en {$IFDEF WIN64} et ça a compilé.

    Pour autant j'ai des bibliothèques (Indy, Synaser, ...) qui en comportent des wagons. Faut-il tous se les changer à la mimine ou bien y a-t-il d'autres solutions.

    Par ailleurs, ce qui est entre balises {$IFDEF WIN32} n'est peut-être plus valable sous win64 ?

    Cordialement.

    Pierre

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Dans un fichier .pas que j'avais fait, je l'ai changé en {$IFDEF WIN64} et ça a compilé.
    C'est ton unité, à toi de savoir pourquoi tu avais limité certaines parties/déclarations au 32 bits.

    Mais si tu peux indifféremment passer de 32 à 64, cette condition est inutile.

    Citation Envoyé par ChPr Voir le message
    Pour autant j'ai des bibliothèques (Indy, Synaser, ...) qui en comportent des wagons. Faut-il tous se les changer à la mimine ou bien y a-t-il d'autres solutions.
    Tu ne devrais rien changer sur les bibliothèques qui ne sont pas de ton propre cru.

  3. #3
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par Andnotor Voir le message
    C'est ton unité, à toi de savoir pourquoi tu avais limité certaines parties/déclarations au 32 bits ...
    Parce qu'à l'époque, il n'y avait que Win32 (ou c'est ce que j'en savais).

    Citation Envoyé par Andnotor Voir le message
    ... Mais si tu peux indifféremment passer de 32 à 64, cette condition est inutile. ...
    Cette condition (quelle soit Win32 ou WIn64) reste utile pour différencier le code avec Linux.

    Citation Envoyé par Andnotor Voir le message
    ... Tu ne devrais rien changer sur les bibliothèques qui ne sont pas de ton propre cru.
    Synaser ne comporte que des win32 qui l'empêche de se compiler sur mon PC Windows 64 bits. Je les ai tous changés pour Win64 et la compilation se passe bien.

    Quand à Indy, les balises sont : WIN32_OR_WIN64_OR_WINCE.

    Je suppose que, quelque part, cette balise doit être définie pour autant que l'OS soit de type Windows.

    Maintenant, je suppose que je devrais pouvoir faire comme Indy, créer une balise WIN32_OR_WIN64_OR_WINCE qui serait validée si l'OS est de type Windows. Si tel est le cas, à quel endroit de mon programme devrais-je placer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {$IFDEF WIN32} {$DEFINE WIN32_OR_WIN64_OR_WINCE} {$ENDIF}
    {$IFDEF WIN64} {$DEFINE WIN32_OR_WIN64_OR_WINCE} {$ENDIF}
    {$IFDEF WINCE} {$DEFINE WIN32_OR_WIN64_OR_WINCE} {$ENDIF}
    Si tant est ce cette syntaxe soit la bonne. Est-il possible de mettre des conditions logique entre ces balises, du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$IFDEF WIN32} OR {$IFDEF WIN32} ... {$ENDIF}
    ? Je n'ai rien trouvé à ce sujet.

    Cordialement.

    Pierre

  4. #4
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Je te conseille vivement d'installer ces composants depuis le gestionnaire de paquets en ligne (menu paquet). Tu ne devrais pas avoir de problème en passant par là et en plus tu auras les dernières versions.

    Ensuite pour ton code balisé entre {$IFDEF WIN32} :
    - 1) Si ton code est spécifique à Windows (sans différence entre 32 et 64 bits) remplace simplement Win32 par Windows ou inversement pour Linux {$IFDEF LINUX}, {$IFDEF DARWIN} pour Mac, {$IFDEF UNIX} pour Linux et Mac
    - 2) soit tu peux supprimer simplement les balises
    - 3) soit tu rajoutes un {$ELSE} et tu ajoutes le code pour Win64

    la meilleurz structure selon moi c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    {$IFDEF WINDOWS} // Spécifique à Windows
      {$IFDEF WIN64} // en 64 bits
      ...
      {$ELSE}  // en 32 bits
      ...
      {$ENDIF}
    {$ENDIF}
     
    {$IFDEF UNIX} // pour Linux et Mac
    ...
      {$IFDEF DARWIN} // pour Mac
       ...
      {$ENDIF}
      {$IFDEF LINUX} // pour Linux
       ...   
      {$ENDIF}
    {$ENDIF}
     
     
    {$IFDEF DARWIN} // pour Mac
    ...
    {$ENDIF}
     
    {$IFDEF LINUX} // pour Linux
    ...   
    {$ENDIF}
     
    {$IFDEF CPUI386}   //Uniquement pour les processeurs 32 bits, indépendamment de l'OS
    ...
    {$ENDIF}
     
    {$IFDEF CPUX86_64}  //Uniquement pour les processeurs 64 bits, indépendamment de l'OS
    ...
    {$ENDIF}
     
    // ou pour ces 2 derniers
     
    {$IFDEF CPUX86_64}  // pour les processeurs 64 bits, indépendamment de l'OS
    ...
    {$ELSE} // pour les processeurs 32 bits, indépendamment de l'OS
    ...
    {$ENDIF}
    Notes : pour différencier les OS je préfère utiliser des blocs distincts plutôt que d'utiliser un {$ELSE} entre chaque


    A+

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Je reviens sur la bibliothèque Indy. Si elle comporte la balise WIN32_OR_WIN64_OR_WINCE, elle comporte aussi la balise WIN32 et cette dernière n'est pas validée dans mon environnement 64 bits. De xce fait, je peux pas l'installer.

    Si comme le dit "Andnotor" : Tu ne devrais rien changer sur les bibliothèques qui ne sont pas de ton propre cru.

    Je fais comment ? Il faut certainement que je fasse {$DEFINE WIN32} quelque part ?

    Cordialement.

    Pierre

  6. #6
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut c'est normal qu'elle ne soit pas validée tu est en 64 bits pas en 32 bits.

    Je viens d'installer les composants Indy depuis le gestionnaire de paquet en ligne, depuis le dépôt sans aucun problèmes. Puis j'ai créé un petit client TCP vite fait et tout se compile normalement.

    Bon dimanche

    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  7. #7
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Salut c'est normal qu'elle ne soit pas validée tu est en 64 bits pas en 32 bits. ...
    Je sais bien, mais c'est bien là le problème. en utilisant le patch proposé ici, j'ai réussi à l'installer

    Citation Envoyé par BeanzMaster Voir le message
    ... Je viens d'installer les composants Indy depuis le gestionnaire de paquet en ligne, depuis le dépôt sans aucun problèmes. ...
    Je dois être un bougre d'idiot car en suivant le lien donné dans le gestionnaire de dépôts, je suis incapable d'arriver au téléchargement de la dernière version.

    Cordialement.

    Pierre.

  8. #8
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par ChPr Voir le message
    Je dois être un bougre d'idiot car en suivant le lien donné dans le gestionnaire de dépôts, je suis incapable d'arriver au téléchargement de la dernière version.

    Cordialement.

    Pierre.
    Pourquoi te compliquer la vie à suivre le lien ? Tu cliques simplement sur installer depuis le dépôt. Le téléchargement, la compilation, la création de l'edi et l'installation des composants se lancent tout seul
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  9. #9
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Pourquoi te compliquer la vie à suivre le lien ? Tu cliques simplement sur installer depuis le dépôt. Le téléchargement, la compilation, la création de l'edi et l'installation des composants se lancent tout seul
    Bon, comme je l'ai installé avec le patch, je vais en rester là sauf s'il y a problème.

    Toutefois, Jérome, je garde en tête la méthode que tu décris pour ce composant ou pour d'autres.

    Cordialement.

    Pierre

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

Discussions similaires

  1. [Divers] Conversion d'applications win32 en win64
    Par freud dans le forum Outils
    Réponses: 2
    Dernier message: 12/04/2016, 08h03
  2. [LAPACK] installation pour Win32 et Win64
    Par FrankOVD dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 26/11/2013, 22h52
  3. Win32 vs Win64 - runtime error en 64 bits
    Par Slookeur dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 05/04/2012, 15h02
  4. [WIN32][D7] Changer de fond d'écran windows
    Par Herk77 dans le forum Delphi
    Réponses: 9
    Dernier message: 25/10/2006, 19h38
  5. [API win32] Changer le background des menuPopup
    Par dalyusmo dans le forum MFC
    Réponses: 6
    Dernier message: 05/10/2005, 13h35

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