|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : avril 2006 Messages : 39 ![]() |
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 |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : août 2006 Messages : 788 ![]() |
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 ? |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : avril 2006 Messages : 39 ![]() |
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? |
|
|
00
|
|
|
#4 | |
![]() ![]() Inscription : août 2006 Messages : 788 ![]() |
Citation:
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. |
|
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : août 2006 Messages : 788 ![]() |
Lis-tu l'anglais ? Si oui, peut-être trouveras-tu quelque chose ici http://software.intel.com/en-us/forums/topic/276097
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : avril 2006 Messages : 39 ![]() |
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+ |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : avril 2006 Messages : 39 ![]() |
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+ |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com