Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 39
    Points : 10
    Points
    10

    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

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    août 2006
    Messages
    844
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 844
    Points : 1 178
    Points
    1 178

    Par défaut

    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 ?

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 39
    Points : 10
    Points
    10

    Par défaut

    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?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    août 2006
    Messages
    844
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 844
    Points : 1 178
    Points
    1 178

    Par défaut

    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.

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    août 2006
    Messages
    844
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2006
    Messages : 844
    Points : 1 178
    Points
    1 178

    Par défaut

    Lis-tu l'anglais ? Si oui, peut-être trouveras-tu quelque chose ici http://software.intel.com/en-us/forums/topic/276097

  6. #6
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 39
    Points : 10
    Points
    10

    Par défaut

    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+

  7. #7
    Candidat au titre de Membre du Club
    Inscrit en
    avril 2006
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : avril 2006
    Messages : 39
    Points : 10
    Points
    10

    Par défaut

    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+

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •