Utiliser les fonctions contenues dans des classes d'une DLL
romauto750
Messages postés45Date d'inscriptionmercredi 9 novembre 2005StatutMembreDernière intervention12 janvier 2012
-
5 juil. 2009 à 12:59
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 2014
-
18 juil. 2009 à 17:48
Bonjour à tous,
Je me tourne vers vous car je dois utiliser les fonctions d'une dll. Le problème c'est que dans cette dll, il y a plusieurs classes. Je n'arrive pas à utiliser les fonctions qui sont dans ces classes.
En temps normal avec GetProcAddress(...), cela marche bien mais la comme les fonctions sont dans les différentes classes, je ne sais pas comment faire.
Je n'ai pas trouvé beaucoup d'infos sur ça sur le net. Quelqu'un aurait une idée ?
J'ai essayé différentes syntaxes comme MaClasse.MaFonction ou MaClasse_MaFonction mais rien ne marche.
Merci beaucoup par avance.
A voir également:
Utiliser les fonctions contenues dans des classes d'une DLL
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 6 juil. 2009 à 13:25
La méthode généralement utilisée pour se lier à une dll ne passe pas par GetProcAddress() mais par une table d'import, ce qui est plus rapide niveau exécution (géré par l'OS au chargement) et plus simple dans le code.
Réfère-toi à une des nombreuses sources de ce site utilisant un dll.
Sous VS :
Une fonction à importer d'une dll est marquée par __declspec(dllimport).
C'est la même chose pour les classes, cf MSDN.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 18 juil. 2009 à 17:48
Salut,
Récupérer des adresses de méthode avec GetProcAddress puis les exécuter me paraît dangereux, et à peu près impossible.
Si tu tiens à te lier dynamiquement à la dll, fait lui exporter des fonctions, pas des méthodes.
Sinon tu peux te lier statiquement, mais c'est assez moche risqué et peu souple, car ta dll est difficilement utilisable, il te faut le même compilo pour faire la dll et le .exe.
Bref, quand on choisit les fonctions à exporter, faut rester simple. Echanger uniquement des structures et des types simples.