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

C++ Discussion :

Compilation avec gcc: initialization from incompatible pointer type


Sujet :

C++

  1. #1
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut Compilation avec gcc: initialization from incompatible pointer type
    Hello world

    Je reprend un code dont je ne connais quasiment rien, la bonne nouvelle à la première compile il y a peu d'erreur, 3 pour être précis, la mauvaise erreur sur des pointeurs.....

    C'est à chaque fois la même chose mais sur des fonction différentes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    attention : initialization from incompatible pointer type [-Wincompatible-pointer-types]
       ULONG(*MmQueryAddressProtectFix)(IN PVOID VirtualAddress) = &MmQueryAddressProtect;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    attention : initialization from incompatible pointer type [-Wincompatible-pointer-types]
     KIRQL(*KeRaiseIrqlToDpcLevelFix)(void) = &KeRaiseIrqlToDpcLevel;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    attention : initialization from incompatible pointer type [-Wincompatible-pointer-types]
     VOID(*KfLowerIrqlFix)(  KIRQL   NewIrql )   = &KfLowerIrql;
    J'utilise cygwin sur windows 7 64 bit.
    Auriez vous une idée SVP?

    Merci

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Il nous faudrait au minimum connaître :

    • la signature des fonctions citées s'il s'agit de noms de fonctions ;
    • le type des objets cités (à droite de l'opérateur =) s'il s'agit de variables pointant sur des fonctions.


    Le fait que ces lignes génèrent des avertissements et que les variables déclarées portent le suffixe Fix n'est pas bon signe.

  3. #3
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    Merci

    Malheureusement je reprend le truc et je ne dispose que de peux d'information....

    Bon en lisant le code je suis tombé sur la définition de PVOID:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    typedef PVOID PKEXCEPTION_FRAME;
    Et le tous semble avoir un lien avec le Kernel Windows....

  4. #4
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Je reformule mon interrogation : comment sont déclarés MmQueryAddressProtect, KeRaiseIrqlToDpcLevel et KfLowerIrql ?

  5. #5
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    J'ai trouvé la définition de ULONG:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typedef long LONG, *PLONG;
    typedef unsigned long ULONG, *PULONG;
    typedef PULONG ULONG_PTR;
    PVOID:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef void VOID, *PVOID, *LPVOID;
    J'espere que cela peux aider....

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Cela n'aide en rien, ce sont juste les définitions que l'on trouve sur absolument tous les headers système.
    Si l'on t'a demandé de corriger ça, probablement que tu dois en avoir les compétences ?
    C'est un simple type mismatch. Peut-être que le compilo était auparavant plus souple. En tous cas maintenant il tique.
    Pour corriger ça y'a pas 500 solutions : soit la variable change de type, soit ce qu'on met dedans change de type. Soit on y va à la crade avec du cast.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    Autant pour moi l'erreur ne venait pas de là ce n'est qu'un warning.....je doit chercher ailleurs ce qui empêche d'aller au bout le code...


    Merci

    NB: j'ai desisntaller la version de Cygwin 64 t j'ai installé la version 32 bit et la sa marche, j'ai tjr les warning maus sa marche.

  8. #8
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Un warning, c'est un message du compilateur pour te dire qu'il y aura des bugs.
    Ca ne marche pas tant qu'il y en a.

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 484
    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 484
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    Je reformule mon interrogation : comment sont déclarés MmQueryAddressProtect, KeRaiseIrqlToDpcLevel et KfLowerIrql ?
    MmQueryAddressProtect : Bricolage fait sur du reverse-engineering du Kernel NT Windows :
    https://github.com/advancingdragon/D...irtboxKernel.h

    KeRaiseIrqlToDpcLevel : primitive au niveau du Kernel Windows, on n'est clairement pas dans du code qui tourne en mode User mais en Ring0
    https://msdn.microsoft.com/en-us/lib...or=-2147217396

    KfLowerIrql : idem MmQueryAddressProtect

    Demander à un pied-tendre de faire du Ring0, en C++, sous Windows avec Cygwin, ils ont une confiance énorme dans vos capacités d'adaptation, ou ils sont complètement aux fraises vos managers.

  10. #10
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Je vote pour les fraises

  11. #11
    Membre éclairé Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Par défaut
    C'est un projet perso...non professionnelle....

    J'ai noté vos remarques et me serons très utiles.

    Merci

  12. #12
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Tout ça ressemble à des tentatives de faire pointer des pointeurs de fonction vers des fonctions qui n'ont pas la même convention d'appel...
    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.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 21/01/2009, 15h21
  2. Réponses: 9
    Dernier message: 21/10/2006, 13h38
  3. compilation avec gcc: erreur inhabituelle
    Par artatum dans le forum C
    Réponses: 4
    Dernier message: 12/10/2005, 17h13
  4. Problème de compilation avec gcc
    Par Niktou dans le forum Linux
    Réponses: 9
    Dernier message: 27/09/2005, 15h18
  5. compilation avec gcc : erreurs bizard !!!
    Par CodeurNé dans le forum C
    Réponses: 2
    Dernier message: 23/09/2005, 18h09

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