Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > Fortran
Fortran Forum d'entraide sur la programmation en Fortran. Avant de poster -> FAQ Fortran
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 03/11/2012, 22h27   #1
zerbault
Invité régulier
 
Inscription : avril 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 39
Points : 9
Points : 9
Par défaut DLL Fortran depuis VBA Excel [Error 48]

Bonjour,

Je fais face depuis quelques jours, je cherche en vain a regler un probleme de communication entre VBA Excel et une DLL en Fortran.

Voici les symptomes:
Sur l'ordinateur qui a servit a compiler la DLL (avec intel visual fortran), cela fonctionne tres bien mais des que je met la DLL sur un autre ordinateur (meme repertoir, meme OS), cela ne fonctionne plus et j'ai une Erreur 48 (fichier xxx.DLL introuvable).
Ensuite, j'installe Intel visual fortran et je recompile la DLL sur l'ordi ou ce ne fonctionnait pas et la miracle, cela fonctionne...

Je ne comprend pas en quoi le fait de compiler sur l'ordinateur peut regler ce probleme.

Aurriez-vous une idee? Un fichier est-il cree dans un dossier specifique (system32 par exemple)? Est-ce qu'un registre est modifie pas ICF?

Y'aurait-il un moyen de faire fonctionner la DLL sans devoir la compiler sur chaque ordi concerne?

Merci, Cordialement
Zerbault
zerbault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2012, 14h20   #2
Sylvain Bergeron
Modérateur
 
Inscription : août 2006
Messages : 788
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : août 2006
Messages : 788
Points : 1 041
Points : 1 041
Est-il possible que ta DLL fasse appel à des fonctions se trouvant dans une librairie système externe. Par switch de compilation, tu peux habituellement dire le type d'assemblage si les fonctions externes doivent être incluses dans ta DLL (importées d'un LIB) ou maintenues externes et disponibles via une DLL.

Peut-être as-tu pris la 2ième piste et cette DLL additionnelle n'est disponible que si tu installe le compilateur.

Peux-tu exécuter ta DLL sur un nouveau PC sur lequel tu installe le compilateur et tu copies la DLL sans la recompiler ?
Sylvain Bergeron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 14h03   #3
zerbault
Invité régulier
 
Inscription : avril 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 39
Points : 9
Points : 9
Merci Sylvain pour ta réponse.

J'ai essayé ta seconde hypothèse (tester la DLL en ayant installé IVF mais sans la compiler sur l'ordinateur en question).
Ca n'a pas fonctionné.

Le code de ma DLL ne fait pas appel explicitement une autre DLL. Cependant ton hypothèse #1 est judicieuse.
Comment indiques-tu quel type d'assemblage tu souhaites?
zerbault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 14h13   #4
Sylvain Bergeron
Modérateur
 
Inscription : août 2006
Messages : 788
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : août 2006
Messages : 788
Points : 1 041
Points : 1 041
Citation:
Envoyé par zerbault Voir le message
J'ai essayé ta seconde hypothèse (tester la DLL en ayant installé IVF mais sans la compiler sur l'ordinateur en question).
Ca n'a pas fonctionné.
Troublant. Quelle version de Windows ?

Citation:
Envoyé par zerbault Voir le message
Le code de ma DLL ne fait pas appel explicitement une autre DLL. Cependant ton hypothèse #1 est judicieuse.
Comment indiques-tu quel type d'assemblage tu souhaites?
Tu n'as pas à faire appel explicite à une DLL pour qu'une DLL soit référencée. Un « read » ou une fonction mathématique de base peut très bien utiliser une fonction d'une DLL externe. Comment indique t'on ? Je n'ai pas accès à un compilateur présentement, mais de mémoire, c'est relatif au « binding dynamique » vs « binding statique ». De toute façon, ça ne semble pas le problème.
Sylvain Bergeron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 14h40   #5
Sylvain Bergeron
Modérateur
 
Inscription : août 2006
Messages : 788
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : août 2006
Messages : 788
Points : 1 041
Points : 1 041
Lis-tu l'anglais ? Si oui, peut-être trouveras-tu quelque chose ici http://software.intel.com/en-us/forums/topic/276097
Sylvain Bergeron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/11/2012, 16h21   #6
zerbault
Invité régulier
 
Inscription : avril 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 39
Points : 9
Points : 9
Merci pour le lien, je vais essayer de voir s'il n'a pas des similitudes avec mon problème.

Les différents PC que j'ai utilisé jusqu'à présent (pour compiler et ensuite tester) sont tous sous Windows 7.
Ma DLL en question n'est pas nouvelle, je l'ai juste modifié il y'a peu pour l'adapter.
Maintenant que j'y repense, je crois que la DLL de départ qui fonctionnait sous n'importe quel PC avait été compilé avec un PC sous XP.

Je vais regarder dans les options de compilation.

A+
zerbault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2012, 13h51   #7
zerbault
Invité régulier
 
Inscription : avril 2006
Messages : 39
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 39
Points : 9
Points : 9
J'ai trouvé la sollution !
Il fallait que je change le mode de compilation de la dll de "Debug" à "Release" dans Intel Visual Fortran.

Merci encore et A+
zerbault est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 15h02.


 
 
 
 
Partenaires

Hébergement Web