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

MFC Discussion :

Recuperer une variable depuis une DLL sous windows


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut Recuperer une variable depuis une DLL sous windows
    Bonjour !

    Voila je dois ecrire du C++ multiplateformes (aie, ca commence mal) qui recupere des symboles depuis une DLL .

    Dans ma DLL, j'ai le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #ifdef WIN32_
    #define MY_EXPORT __declspec (dllexport ) 
    #else 
    #define MY_EXPORT
    #endif 
     
    #ifdef __cplusplus
    	extern "C" {
    #endif
     
     
    MY_EXPORT GrammarDef grammars = {
    bla bla ...
    };
    et dans l'appelant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #ifdef WIN32_
    grammars=static_cast<GrammarDef*>GetProcAddress(dll, grammarsSymbolName);
    #else
    grammars=static_cast<GrammarDef*>(dlsym(dll, grammarsSymbolName));
    #endif
    Et le probleme est que ce code fonctionne (il compile et s'execute comme il faut) a merveille sous les unix, linux etc... mais pas sous windows .
    En effet la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grammars=static_cast<GrammarDef*>GetProcAddress(dll, grammarsSymbolName);
    me genere une erreur de compilation :
    Citation Envoyé par Visual C++.net
    'static_cast' : cannot convert from 'FARPROC' to 'GrammarDef *'
    Est ce que quelqu'un sait ou est ce que j'ai faute ?
    Apres pas mal de recherche sur google, je n'ai toruve que des exemples ou on utilise GetProcAddress pour avoir un pointeur sur fonction et jammais pour avoir un pointeur sur une variable

    Merci d'avance !

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    normal ,si tu es sur de ta conversion utilise reinterpret_cast .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    ouhla !!! C'est violent ca
    OUi je suis sur de ma conversion et GetProcAddress retourne la meme chose que dlsym sous unix, ca devrait marcher . Cependant j'aime pas trop utiliser reinterpret_cast quand il y a d'autre possibilites. Mais y'a t'il d'autres possibilites dans ce cas? la est la question ... (j'imagine que oui quand meme non ? )

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    static_cast ne fonctionne que sur des familles de pointeurs identiques testées a la compilation pour eviter les erreurs fatales ...
    d'ou l'erreur:
    static_cast' : cannot convert from 'FARPROC' to 'GrammarDef *'
    pour des conversions entre type differents il faut utiliser reinterpret_cast.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Ok,

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    pense a mettre résolu sur ton post

Discussions similaires

  1. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  2. Modifier une variable d'une classe depuis une autre classe
    Par Kezado dans le forum Général Java
    Réponses: 8
    Dernier message: 23/09/2010, 14h52
  3. Recuperer le nom d'une variable dans une variable String
    Par aliwassem dans le forum Langage
    Réponses: 11
    Dernier message: 23/10/2009, 12h38
  4. [C#] Problème d'accès à une variable depuis une popup
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/01/2007, 15h30
  5. Depuis une requête passer une variable
    Par kitty2006 dans le forum Langage
    Réponses: 1
    Dernier message: 26/09/2006, 10h54

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