charger 2 fois la même DLL - Divers - Programmation
MarshPosté le 10-09-2008 à 22:52:47
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++ ?
Marsh Posté le 10-09-2008 à 22:52:47
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!