Bonjour,
Mon client me demande de créer une dll à partir des différents modules que j'ai créés. J'ai essayé en m'inspirant de la doc de Visual Fortran mais je n'arrive à rien.
Voilà ce que j'ai fait :
a) J'ai crée un nouveau projet "Fortran Dynamic Link Library". J'y ai mis le .f90 contenant un de mes modules (qui est indépendant de tous les autres, je voulais faire simple).
b) J'ai voulu définir les variables / procédures à exporter avec "!DEC$ ATTRIBUTES DLLEXPORT::maVar ou maProc". Pour les subroutines pas de probléme mais pour les types, à la compilation, il m'a renvoyé un message d'erreur suivant : "Conflicting attributes or multiple declaration of name."
J'avais essayé de coder ça de la façon suivante :
Du coup, j'ai essayé (toujours à l'intérieur du module) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Module monModule !DEC$ ATTRIBUTES DLLEXPORT::monType Type monType EndType monType End Module monModule
Là, le message d'erreur est le suivant : "This statement is not permitted as a statement within a derived-type-def".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Type monType !DEC$ ATTRIBUTES DLLEXPORT::monType End Type monType
J'ai finalement réussi à compiler le code suivant :
Cette solution ne me convient pas vraiment parce que j'ai défini 14 types avec chacun une dizaine de variables. Y a-t-il un autre moyen de précéder ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Module monModule !DEC$ ATTRIBUTES DLLEXPORT::monType%maVar Type monType Integer :: maVar EndType monType End Module monModule
c) J'ai ensuite cliqué sur "rebuilt all" pour construire ma dll. D'après la doc (enfin ce que j'en ai compris), les liens se font tout seuls donc je n'ai pas cherché plus loin.
d) J'ai créé un nouveau projet normal. J'ai copié dans le répertoire de mon nouveau projet le .dll et j'ai ajouté aux fichiers du projet le .lib. J'ai alors commencé mon programme principal de la façon suivante :
A la compilation, j'ai le message suivant : "Error in opening the Library module file."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 program monProgram USE monModule end program monProgram
J'ai relu la doc mais je ne comprends pas où ça pêche... Quelqu'un a-t-il déjà rencontré le problème ?
Je veux bien aussi tenter de créer la dll en lignes de commandes mais là, j'aurais besoin que quelqu'un de très patient qui me détaille la procédure pas à pas...
Merci d'avance,
Mathlus.
Partager