Comment decharger une DLL ???

mouse74 Messages postés 2 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 13 novembre 2006 - 10 nov. 2006 à 11:11
mouse74 Messages postés 2 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 13 novembre 2006 - 13 nov. 2006 à 11:18
Bonjour,
J'ai un gros problème. Voilà, mon programme VB fait appel à une dll fortran, tout fonctionne bien sauf que si je lance deux calculs de suite, l'application VB me réstitue les résultats du premier calcul à chaque fois. J'ai réinitialiser tous les valeurs, et je suis sûre que celle envoyé à la dll lors du deuxième calcul corresponde. Je suis donc en train de me demander, si c'est pas la dll qui garde les résultats en cache. Je souhaiterais donc decharger/recharger  la dll avant chaque calcul pour être sure que ça ne vienne pas de ça.
Merci d'avance pour votre aide, je suis complétement largué.
Slts

3 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
10 nov. 2006 à 11:34
Que fait ta dll exactement ?
En principe, une fonction retourne une valeur.
Si tu as mis cette valeur dans une variable, c'est elle qu'il faut réinitialiser en appelant à nouveau ta fonction.

Pour faire plus court :
sans ton code et le descriptif de la dll concernée, je vois mal quelle réponse éclairée tu pourrais recevoir...
0
cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
10 nov. 2006 à 12:57
Comment charges-tu ta DLL ?   Si c'est via un CreateObject("MaDLL.MaClass"), il faut que tu décharges toi-même la DLL.

Exemple :

Dim oCalcul As object

   Set oCalcul = CreateObject("Fortran.Count")

   .....

   Set oCalcul = Nothing

(Note : cette façon de faire n'est pas la seule et en fonction des cas, certaines méthodes sont meilleures que d'autres)

Christophe
0
mouse74 Messages postés 2 Date d'inscription lundi 16 octobre 2006 Statut Membre Dernière intervention 13 novembre 2006
13 nov. 2006 à 11:18
Bonjour,
En fait, je declare ma DLL et ma fonction de la manière suivante :
Declare Sub SGLEPT Lib "C:\Program Files\Rep Prog\nom.dll" _
  (MAX_TOW As Double, V1 As Double, VR As Double, V2 As Double, n1 As Double, _
   ACCEL_ALTITUDE As Double, MAX_AT_S As Double, FLEX As Boolean, TO_RUN As Double, TO_DISTANCE As Double, ACC_STOP_DISTANCE As Double, _
   ByRef SEC_SEG_NET_GRAD As Double, STATUS As Long, LIMITING_OBSTACLE As Long, _
   ByVal SCAP_ERROR_FLAG As String, ByVal L_SCAP_ERR_FLAG As Long, _
   ByVal LIMIT_CODE As String, ByVal L_LIM_CODE As Long, _
   ByVal REVISION_NUMBER As String, ByVal L_REVISION_NUMBER As Long)
Et ensuite j'appelle ma sub avec les paramètres tous initialisé à 0 et ma dll me restitue les valeurs.
       Call fortran_interface.SGLEPT(MAX_TOW, V1, VR, V2, n1, ACCEL_ALTITUDE, MAX_AT_S, FLEX, TO_RUN, _
                     TO_DISTANCE, ACC_STOP_DISTANCE, SEC_SEG_NET_GRAD, STATUS, LIMITING_OBSTACLE, SCAP_ERROR_FLAG, _
                     Len(SCAP_ERROR_FLAG), LIMITATION_CODE, Len(LIMITATION_CODE), _
                     REVISION_NUMBER, Len(REVISION_NUMBER))

 Toutes les autres variables sont bonnes sauf une MAX_AT_S, elle est bien reinitialisé à 0 avant l'appel de la procédure et aussi dans le programme fortran qui compose la DLL, mais j'ai l'impression que c'est la DLL qui garde la valeur.
Merci beaucoup pour votre aide
0
Rejoignez-nous