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 :

acces d'un objet créer par un autre projet?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut acces d'un objet créer par un autre projet?
    bonjour!

    voila j'ai actuellement un projet qui me créer un objet de type class.cette executable doit tourner en tache de fond afin qu'il me crée un objet "TableMemoire" qui contient un Label correspondant a un Offset.

    J'ai besoin d'accéder à TableMemoire dans un autre projet pour que je puisse le modifier ou obtenir un offset.mais je ne sais pas comment faire communiquer les deux projets.



    voila j'espère avoir été assez claire.

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Quand tu dis 2 projets, ce sont 2 exécutables ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    oui en faite le premier qui génère l'objet TableMemoire est un .exe et l'autre sera une dll

  4. #4
    tut
    tut est déconnecté
    Membre éclairé
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par défaut
    La réponse tient en trois lettres : IPC, pour Inter Processus Communication.
    Sous Win32, il y a plein de façons de faire : fichiers partagés, pipes nommé ou anonymes, mailslot, socket, mémoire partagée, etc....
    Personnellement pour ce genre de chose, j'utilise les pipes nommés.
    MSDN.com est ton ami, si tu utilises Win32, of course.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    ok merci je vais éplucher cela et voir ce que je peux en tirer!

  6. #6
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Si tu as une dll, il ne doit pas y avoir de problème, pourquoi ne pas exporter une fonction dans la dll qui reçoit un pointeur TableMemoire ?

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    bah vue que ce sont 2 projet différent (visual c++) je ne vois pas comment exporter le pointeur car la declaration extern ne marche que entre les fichiers d'un même projet il me semble.

  8. #8
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Je ne parle pas du mot "extern", mais d'exporter une fonction dans ta dll, c'est à dire y avoir accès à l'éxécution.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    ok je vois ce que tu veux dire je peux déclarer dans la dll quelle recevra un pointeur TableMemoire mais comment la dll à accès à ce pointeur.il faudrait que dans le .exe qui génère l'objet TableMemoire il y ait une fonction qui envoie le pointeur TableMemoire à la dll. Or je ne sais pas comment faire une telle fonction.Mais si tu le sait je suis preneur.

  10. #10
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Justement regarde ce post: http://www.developpez.net/forums/viewtopic.php?t=480048

    Dans ton cas ça sera :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    extern "C" __declspec(dllexport) void ModifTab(TableMemoire *tab)
    {
       ...
    }
    LoadLibrary + GetProcAddress pour charger la dll et appeler la fonction.

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    Donc si j'ai bien compris !

    le code :

    extern "C" __declspec(dllexport) void ModifTab(TableMemoire *tab)
    {
    ...
    }

    est a mettre dans le header de la dll.

    et les fonction LoadLibrary + GetProcAddress dans le .exe c'est ça?

    merci je testerais ca demain car je suis au boulot et j'ai finis ma journée.
    merci!

  12. #12
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    En général dans un .cpp de la dll.

    Oui LoadLibrary et GetProcAddress dans l'exe.

  13. #13
    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
    Mais là, c'est en un seul processus, ce n'est pas "récupérer un objet d'un autre programme qui tourne en tâche de fond"...
    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.

  14. #14
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Citation Envoyé par gaoul
    oui en faite le premier qui génère l'objet TableMemoire est un .exe et l'autre sera une dll
    Donc c'est bien un seul processus.

Discussions similaires

  1. Créer un projet partagé par d'autres projets IHM.
    Par ziad.shady dans le forum Java EE
    Réponses: 5
    Dernier message: 02/06/2014, 21h59
  2. Réponses: 7
    Dernier message: 26/03/2008, 17h20
  3. manipuler des objets créés par un autre prg
    Par aziz jim dans le forum C++
    Réponses: 1
    Dernier message: 07/11/2007, 12h08
  4. Réponses: 3
    Dernier message: 23/08/2007, 09h53
  5. Réponses: 9
    Dernier message: 19/08/2004, 11h03

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