IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

Création DLL sous CVF


Sujet :

Fortran

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Création DLL sous CVF
    Bonjour tout le monde,

    J'ai un logiciel (dont j'ai accès au code source) compiler en dll avec Compaq Visual Fortran. Je voudrais pouvoir créer une dll exterieur qui sera appelé par ma dll principal (mon logiciel). En fait, la dll externe va récupérer des variables stocker dans la dll principale, faire un calcul, et renvoyer le résultat à ma dll principale.
    Donc si quelqu'un pouvais me donner des indications pour savoir comment on faire l'appel d'une dll, et comment on fait pour récuperer les données.
    J'ai vraiment du mal a trouver la reponse
    Je vous remercie d'avance...

  2. #2
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bon...
    J'ai compris un truc:
    Il faut que j'utilise dans la dll secondaire cette ligne de commande
    cDEC$ ATTRIBUTES DLLEXPORT:: test1

    Et dans ma dll principale pour faire appel à cette fonction je ferais un:
    cDEC$ ATTRIBUTES DLLIMPORT::test1
    et ensuite je pourrais faire un
    CALL test1

    Mais je n'arrive pas a comprendre dans la notice d'utilisation de CVF comment on fait pour compiler tout ca!!!

    Si quelqu'un pouvais m'expliquer plus clairement ce qu'il essaie de dire dans leur bouquin ca serait sympa merci.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Il y a longtemps que je n'ai pas utilisé CVF et ta question est assez vague, alors la réponse sera très générale.

    Les DLL sont compilées par des projets distincts. Le projet doit être défini de façon à produire une DLL et non un EXE. À la compilation d'une DLL, tu obtients généralement 2 fichiers importants : la DLL elle-même et un fichier LIB. Le fichier LIB doit être lié (au link) à celui qui utilise la DLL.

    Tu dois donc d'abord compiler la DLL secondaire. Tu obtiendras secondaire.dll et secondaire.lib

    Ensuite, tu ajoutes secondaire.lib à ton projet principal et tu le compile.

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Donc ca marche, je vais rajouter mon .lib à mon projet principale. Mais si jamais je changer mon programme dans la dll secondaire (par exemple je change la formule), est que je vais devoir recompiler mon code source???
    (Désolé si la question n'est pas pertinante, mais je suis un peu nouveau en Fortran et CFV)
    Merci

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Citation Envoyé par adnacademia
    Mais si jamais je changer mon programme dans la dll secondaire (par exemple je change la formule), est que je vais devoir recompiler mon code source???
    En théorie tu dois. En pratique, le .lib contient une « description » de la partie publique de la DLL. Si tu ne la change pas (si tu ne change pas le nom des fonctions exportées ni leurs arguments (nombre et types)), tu n'a pas à recompiler les « clients » d'une DLL.

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour les réponse!
    J'ai réussi à faire fonctionner les exemples qui étaient donnés par CVF.
    Je vais expliquer pourquoi j'ai poser ces questions.
    En fait moi j'ai accés au code source d'un logiciel (compiler en dll) et je dois apporter quelques modifications. Et une des modifications serait de pouvoir permettre à un utilisateur quelconque du logiciel (qui n'a pas accés au code source) de pouvoir utiliser des formules différentes que celle que le logiciel utilise. Dans mon cas, le logiciel utilise une formule de débit, et si ca ne convient pas à l'utilisateur (qui veut utiliser une formule un peu plus complexe, mais utilisant toujours les meme parametres) je voudrais lui laisser l'opportunité de créer sa propre subroutine, et le logiciel fera appel à cette subroutine (on m'as dis qu'il fallait la compiler en dll pour qu'elle soit accessible dans mon logiciel)...
    Donc voila le but de ma manipulation.
    Donc j'espere que je ne pars pas dans la mauvaise direction.
    Ce qui me fait le plus peur c'est que je sois obliger de recompiler a chaque fois que l'on change la subroutine (etant donnée que l'utilisateur lambda n'aura pas accés au code source ca ne sera pas viable comme solution).

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    C'est un problème classique.

    Ta solution est classique également. Juste pour compléter, les alternatives à ta solution que j'ai vu :

    • Quand on veut permettre à l'usager d'entrer une formule mathématique quelconque, mais qui respecte les règles mathématiques régulières (assemblage de variables avec +-*/^ sin cos tan ln exp ...), on peut utiliser un décodeur syntaxique qui « exécute » la formule. C'est lourd à mettre en place mais c'est très très simple d'utilisation et surtout d'entretien
    • Très près de ta solution, mais une seule DLL. On distribue les OBJ et non les sources. Je l'ai vu souvent dans des environnements pré Windows (donc pré DLL) : un programme principal construisait litérallement un programme de calcul en assemblant les objets systèmes avec le code source client personnalisé, compilait le tout et lançait l'exécution.

Discussions similaires

  1. Création DLL sous window 7
    Par M_fox dans le forum C
    Réponses: 1
    Dernier message: 14/03/2014, 13h06
  2. Création de dll sous VStudio 2005
    Par archer dans le forum C++
    Réponses: 1
    Dernier message: 06/06/2008, 13h57
  3. création d'une "dll" sous linux
    Par nuFox dans le forum C
    Réponses: 6
    Dernier message: 05/03/2008, 17h28
  4. Réponses: 6
    Dernier message: 07/06/2007, 22h03
  5. VB6 vers SQLite création de SQLiteVB.dll sous visual 2005
    Par lathenor dans le forum Visual C++
    Réponses: 3
    Dernier message: 21/05/2007, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo