[Visual Fortran] Création Dll
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 :
Code:
1 2 3 4 5 6
|
Module monModule
!DEC$ ATTRIBUTES DLLEXPORT::monType
Type monType
EndType monType
End Module monModule |
Du coup, j'ai essayé (toujours à l'intérieur du module) :
Code:
1 2 3 4
|
Type monType
!DEC$ ATTRIBUTES DLLEXPORT::monType
End Type monType |
Là, le message d'erreur est le suivant : "This statement is not permitted as a statement within a derived-type-def".
J'ai finalement réussi à compiler le code suivant :
Code:
1 2 3 4 5 6 7
|
Module monModule
!DEC$ ATTRIBUTES DLLEXPORT::monType%maVar
Type monType
Integer :: maVar
EndType monType
End Module monModule |
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 ??
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 :
Code:
1 2 3 4
|
program monProgram
USE monModule
end program monProgram |
A la compilation, j'ai le message suivant : "Error in opening the Library module file." :oops:
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.