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

Qt Discussion :

Erreur de compilation


Sujet :

Qt

  1. #1
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut Erreur de compilation
    Bonjour,

    Quand je compile la suite QtSingleApplication fourni sur le site de Qt j'ai une erreur sur la ligne suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            QT_WA( { mutex = CreateMutexW(NULL, FALSE, (TCHAR*)mname.utf16()); },
                   { mutex = CreateMutexA(NULL, FALSE, mname.toLocal8Bit().constData()); } );
    L'erreur est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error: cannot convert 'TCHAR* {aka char*}' to 'LPCWSTR {aka const wchar_t*}' for argument '3' to 'void* CreateMutexW(LPSECURITY_ATTRIBUTES, WINBOOL, LPCWSTR)'
    Je ne trouve pas grand chose sur ce type d'erreur

    Merci de votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 628
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 628
    Points : 10 553
    Points
    10 553
    Par défaut
    Autant l'erreur est triviale ... autant la résolution peut-être prise de choux

    C'est la magie "chaînes de caractères" Microsoft en C++ depuis 20 ans

    TCHAR c'est juste une macro qui défini un type soit wchar_t si ton projet est en Unicode soit char sinon
    Là d'après l'erreur tu as pioché un char.

    LPCWSTR comme son nom l'indique grâce à la notation hongroise c'est un pointeur (P) de type long (L) vers une chaîne de caractères Unicode ou larges (WSTR) constante (C)

    Donc ton erreur te dit: "je ne peux pas transformer une chaîne ASCII ou MBCS en chaîne de caractères Unicode ou larges"

    Les solutions
    • Tu passes ton projet en Unicode
    • Tu utilises la fonction CreateMutexA au lieu de CreateMutexW (Note le A et W à la fin)
    • Il faut maîtriser ton projet (*). Tu lis la MSDN [pour connaître les fonctions de conversion] et/ ou la documentation Qt (**)


    * -> Il faut savoir quel objet est Unicode ou pas et savoir comment passer des chaînes de caractères Unicode/ pas Unicode dans tout ton code.

    ** -> Un petite aide: Tu as le choix (mais il faut les valider) entre MultiByteToWideChar, mbtowc ou A2CW

    Et pour ces fonctions, tu as des grandes chances de coder une petite bibliothèque en détectant si tu es en Unicode ou pas, et sûrement faire attention au code page de ton ordinateur

  3. #3
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Merci pour ton explication complète et surtout complexe. En fait un peu trop pour moi.
    Je vais relire ca à tête reposé demain matin.
    Si je remplace TCHAR par LPCWSTR ca semble compiler à présent mais je subodore que cela ne signifie pas que ca fonctionne correctement.

Discussions similaires

  1. Erreur de compilation après modification du Uses
    Par DevelOpeR13 dans le forum Langage
    Réponses: 5
    Dernier message: 30/10/2007, 14h23
  2. Réponses: 2
    Dernier message: 23/09/2003, 14h32
  3. Réponses: 10
    Dernier message: 22/09/2003, 21h58
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Réponses: 2
    Dernier message: 04/03/2003, 23h24

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