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

Windows Discussion :

charger 2 fois la même DLL


Sujet :

Windows

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut charger 2 fois la même DLL
    Bonjour,

    Je dois faire une évolution sur un logiciel qui charge une DLL pour gerer un matériel.
    - cette évolution consiste a gerer plusieurs matériels(différents) en même temps.

    -Il est très difficile de modifier la DLL qui gère le matériel (bcp de travail) pour que celle ci gère plusieurs materiels à la fois. (par exemple: la dll à un fichier de config qui décrit le matériel)

    - la solution envisagée est donc de charger plusieur fois la DLL, chaque instance ayant son espace memoire. Le problème est que apparement on ne peut pas faire ça..

    - une solution pourrait consister a créer un processus: .exe par matériel, mais cela implique de creer une communication Inter-Processus entre l'exe utilisateur et les exes materiel.
    - j'ai pensé au socket TCP-IP: c'est bien mais ça force à développer un protocole de communication et de sérialiser les données, ce qui semble être long à faire vu qu'il y a pas mal de fonctions exportées par la DLL.
    - Sinon je voudrais bien utiliser une techno qui permet de faire ça de manière un peu automatisée et surement mieux que si je le fais moi même, genre Corba ou COM/DCOM, mais je n'y connais pas grand chose et je ne suis même pas sur que ça soit bien adapté à mon problème.

    questions:

    quelle solution semble être la meilleure?
    puis-je résoudre le problème avec ActiveX?
    si oui comment transformer mon projet "DLL matériel" en projet "ActiveX matériel" avec visual studio 6 ,tout est écrit en c++ ?

    merci d'avance!

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ce qui est sûr, c'est qu'un seul processus ne peut charger une DLL dans deux espaces mémoire différents: Il te faudra forcément de la communication inter-processus.

    Pour ça, je ne sais pas si COM serait très approprié (ce n'est pas si facile d'identifier un processus précis avec). Mais de simples applications fenêtrées invisibles peuvent déjà faire de grandes choses (un message perso avec un handle d'IPC dupliqué, ou mieux, utiliser un objet d'IPC nommé, etc. Sans compter la communication "brute", avec le message WM_COPYDATA.)

    Je te conseillerais soit de la mémoire partagée nommée, avec les mutexes qui vont bien, soit une communication simplement par messages Windows (y compris WM_COPYDATA) ou sockets.

    Sinon, tu PEUX le faire en DCOM, mais il faudra sûrement nommer tes objets avec des monikers (à moins qu'ils aient tous un CLSID différent...).
    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.

Discussions similaires

  1. Eviter de charger plusieurs fois la même url
    Par Dynamès dans le forum Général Java
    Réponses: 5
    Dernier message: 23/07/2012, 09h13
  2. [JFrame] réafficher plusieurs fois un même panel à l'écran
    Par Monkeyget dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 01/04/2005, 14h29
  3. SELECT plusieurs fois les mêmes champs
    Par aergil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2005, 12h10
  4. Comment charger un TFrame depuis une dll ?
    Par Millenod dans le forum Langage
    Réponses: 29
    Dernier message: 22/12/2004, 14h48
  5. [VB.NET] Appliquer plusieurs fois la même fonction...
    Par MiJack dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/09/2004, 10h52

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