Appel à des fonctions extérieures non connues à l'avance
elixir2
Messages postés10Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention29 janvier 2004
-
27 janv. 2004 à 18:18
elixir2
Messages postés10Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention29 janvier 2004
-
29 janv. 2004 à 11:26
Bonjour, j'ai un petit souci. Quelle méthode peut-on utiliser pour appeler des fonctions extérieures à un programme (exemple calcule_carre()) sans connaitre la fonction à l'avance.
Mon application gère une base de données de paramètres numériques. Ces paramètres numériques peuvent être traités par des formules mathématiques compliquées connues seulement de l'utilisateur. J'esperai pouvoir traiter le problème en disant au client qu'il n'avait qu'à compiler ses formules dans une dll et indiquer quelle formule doit être utilisée par mon application (qui listerait les formules disponibles dans une combobox) pour traiter tel ou tel paramètre. Le problème c'est que l'utilisation d'une dll nécessite de déclarer à l'avance les prototypes des fonctions à la compilation.
Schéma:
1. choisir parametre1
2. choisir parametre2
3. Liste des formules disponibles dans le module extérieur
4. Utilisation de la formule calcul1 qui se trouve dans le module extérieur (via adresse de la fonction)
Si quelqu'un a une idée je suis preneur.
A voir également:
Appel à des fonctions extérieures non connues à l'avance
C'est récupérer NomDeLaFonctionDansLaDLL qui me pose problème.
Et c'est le but de mon post, comment lister toutes les fonctions présentes dans une dll pour en déduire le nom des fonctions.
En fait on a besoin de connaître le nom de la fonction, le typage et le nombre de paramètres.
Le type et le nombre de paramètres étant imposés par mon application ce n'est donc pas un problème. Par contre sauf à demander à l'utilisateur de connaître les noms des fonctions des dll chargées (solution pas vraiment pratique), il faudrait que mon appli lui présente la liste des noms de fonctions présentes.
cs_djl
Messages postés3011Date d'inscriptionjeudi 26 septembre 2002StatutMembreDernière intervention27 novembre 20047 28 janv. 2004 à 20:10
non,
la je l'ai appelert calcul, mais calcul c'est juste le nom du pointeur apres des que tu connai nom ou l'adresse(avec GetProcAddress) tu fait
calcul=nom_de_ta_fonction; ==>nom_de_ta_fonction=adresse
et tu pourra utiliser calcul comme ta fonction en l'appelant par (*calcul)
elixir2
Messages postés10Date d'inscriptionmardi 9 décembre 2003StatutMembreDernière intervention29 janvier 2004 29 janv. 2004 à 11:26
Merci pour ton aide mais ce n'est pas ça le problème.
Pour avoir le pointeur sur une des fonctions contenues dans la dll, il faut effectivement faire appel à GetProcAddress.
Or GetProcAddress nécessite de connaître le nom de la fonction. Le problème c'est que je ne connais pas les noms des fonctions dans la dll puisque ces dll sont construites par les utilisateurs de mon application.
Il faut donc que je trouve un moyen de lister les noms des fonctions disponibles dans la dll AVANT de faire appel à GetProcAddress.
Procédure:
- 1 - Lister les noms des fonctions présentes dans la dll (ce que je ne sais pas faire) - 2 - Afficher les noms à l'utilisateur pour qu'il choisisse la fonction qu'il souhaite utiliser.
- 3 - Appeler GetProcAdress avec le nom de la fonction choisie pour en obtenir l'adresse.
- 4 - Utiliser la fonction.