Citation:
Envoyé par EnigmuS
Désolé pour l'énoncé peu clair je reprend :
Un ensemble de .INI décrivent des tests fonctionnels.
C'est à dire ? Ce sont des commandes, des paramètres ? On est pas devins...
Citation:
Ce logiciel s’appuie sur les DLLs de communication produit développées en amont pour les divers tests de production, notamment lors des tests Fonctionnels.
C'est à dire ? Les commandes vont appeler des fonctions de ces DLL ? Tu ne peux pas expliquer les choses simplement, directement ? Mets toi à notre place. On ne sait absolument pas de quoi tu parles, on ne voit rien, on n'est pas dans ton univers...
Citation:
Les DLLs de communication produit
Aucun sens détecté.
Citation:
sont décrit dans un des fichiers INI, et une DLL interface, dont les fonctions ont toutes le même prototype, est développée à chaque produit.
N'a aucun sens. Des fonctions différentes ne peuvent pas avoir le même prototype. Le nom est forcément différent. Par contre, elles peuvent avoir le même profil, c'est à dire le même nombre et type de paramètres et le même type retour. Un classique :
Code:
int f (int n, char **as)
Citation:
Le chargement dynamique de la DLL interface permet alors la communication avec le produit.
C'est quoi le produit ? Le logiciel à tester ?
Citation:
Les DLLs de communication développées en VisualC++ respectent aujourd’hui un formalisme définit, limitant le nombre de types de données possibles (chaine de caractères, entier, flottant, et tableaux)
L'interface des fonctions de la DLL est donc connue.
Citation:
Et moi je dois mettre au point un chargement dynamique de la DLL de
communication à partir d’un fichier de description des fonctions de la DLL.
Le chargement d'une DLL se fait à la demande par une fonction système bien spécifique. Ensuite, il faut définir des pointeurs de fonction et les initialiser en allant chercher l'adresse<des fonctions avec une autre fonction système dont j'ai oublié les noms...
Exemple pour la DLL bien connue "inpout32.dll" :
http://delahaye.emmanuel.free.fr/clib/pio/
Citation:
Mais le probleme est que lorsqu on appel une DLL
Aucun sens. On appelle une fonction, pas une DLL. On charge une DLL. Il faut être précis avec le vocabulaire, sinon, on ne se fait pas comprendre et on passe pour un clown.
Citation:
on la charge et pour appeler la fonction désirée on y affecte un pointeur sur fonction
Ah, tu commences à montrer que tu sais de quoi tu parles. Il était temps !
Citation:
qui nécessite une signature statique
Qu'est-ce qu'une "signature statique" ? Je connais 'prototype'. C'est de ça que tu parles ?
Citation:
or si je m'affranchie des DLL interfaces
C'est quoi ces DLL interfaces ? A quoi ça sert et pourquoi veux-tu les supprimer ?
Citation:
comment construire la signature du pointeur et l'appel correspondant juste en lisant dans un fichier .INI.
Tu veux faire du dynamique de dynamique ? Je crois que tu en demandes un peu trop.
Je crois que je commence à comprendre. Les DLL interfaces sont là justement pour 'normaliser' les interfaces des fonctions des DLL de communication qui peuvent être diverses. Pour une raison que j'ignore, tu veux supprimer ces interfaces et les remplacer par une génération d'appel dynamique crée à l'exécution à partir de données contenu dans un fichier de commande. C'est de la haute voltige et le résultat ne sera absolument pas portable.
Qu'est-ce qui ne va pas avec les DLL d'interfaces ? Pour moi, c'était plutôt de la bonne conception, 100% dynamique, donc extrêmement souple et programmable par fichier de commande.