Bibliothèque Fortran [Résolu]

Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 5 avril 2012 à 11:52 - Dernière réponse : Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention
- 5 avril 2012 à 18:39
Bonjour,

Je cherche à faire évoluer une bibliothèque fortran compilé avec un vieuuuuuuxxxxx compilateur afin de l'intégré dans Visual Studio 2010 (en utilisant "Intel Visual Fortran Composer XE 2011.7.258").

Les link ne fonctionne pas (pour aucune des fonctions Fortran et je n'arrive pas a comprendre ce qui peut bien se passer )

Afin de tester et comprendre comment faire, j'ai crée une micro lib Fortran. Voila le code :
      SUBROUTINE VW_Test(VarTest)
      INTEGER*2 VarTest
      VarTest = 10
      END

Je suis franchement pas doué (carrément une quiche même ) en Fortran mais je pense que vue la simplicité je ne doit pas avoir fait d'erreur.

La configuration de la lib est celle par défaut d'un projet "Static Libray" crée par Intel Visual Fortran.

Dans le C++ j'ai tester différente choses pour intégrer ma fonction :
void __stdcall VW_Test (short *);
extern void __stdcall VW_Test (short *);
extern "C" void __stdcall VW_Test (short *);
void __cdecl VW_Test (short *);
extern void __cdecl VW_Test (short *);
extern "C" void __cdecl VW_Test (short *);
//[...] et d'autre


L'appel de la fonction en C++ :
	short toto;
VW_Test(&toto);
printf("%d\n",toto);


Mais j'ai toujours une erreur a la compilation du style de
1>Menu_tst.obj : error LNK2019: symbole externe non résolu _VW_Test@4 référencé dans la fonction _main


Pourtant le compilateur cherche bien dans ma lib :
1>  Recherche en cours des bibliothèques
1>      Recherche en cours ...\VW_Test_F.lib :


Voila je pense avoir posté tout ce qui est intéressant pour mon problème, si ce n'est pas le cas je me tiens à votre disposition ^^.

Aidez moi svp je commence à être a cour d'idée

Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Afficher la suite 

4 réponses

Répondre au sujet
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 5 avril 2012 à 18:39
+3
Utile
J'AI ENFIN TROUVÉ !!!

Deux jours à piétiner et ne pas avancer d'un huitième de quart de poile de cul c'est dur (mon PC est franchement pas passé loin de pouvoir tester son coefficient de pénétration dans l'aire, perso je dirais pas mauvais )

Bon je m'égare

Configuration du projet Fortran :
Défaut (à confirmer j'ai toucher a ÉNORMÉMENT de choses entre temps) SAUF "Propriété de configuration / Fortran / External Procedures / Calling Convention" = STDCALL, REFERENCE (/iface:stdref)

Étrange j'étais certain d'avoir testé ce paramètre

Déclaration coté C++ :
extern "C" void __stdcall vw_test (short*);

ou (suivant la configuration "Propriété de configuration / Fortran / External Procedures / Name Case Interpretation")
extern "C" void __stdcall VW_TEST (short*);


Bon maintenant que mon micro projet fonctionne il vas faloire que je fasse fonctionner mon vrais projet (et là c'est encore une autre paire de manche mais bon je suis sur la bonne voie je pense )

Merci encore (même si tu n'a pas vraiment pu m'aider) Lucky92 de t'être intéressé à mon problème je me suis senti moins seul face à mon soucis.

Amicalement

PS :
J'ai également trouvé un outil intégré dans VS2010 pour tester les .lib : DUMPBIN
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Polack77
cs_Lucky92 180 Messages postés mercredi 22 décembre 2004Date d'inscription 16 août 2012 Dernière intervention - 5 avril 2012 à 15:29
0
Utile
Salut,

Il me semble qu'il faut préfixer d'un underscore les fonctions fortran qui seront appellées depuis l'extérieur, eg _VM_Test. Mais, mes souvenirs sont très flous... désolé de ne pas pouvoir aider plus.
Commenter la réponse de cs_Lucky92
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 5 avril 2012 à 15:43
0
Utile
Merci pour ta réponse

Mais non à priori ce n'est pas ça.
Si j'ajoute un underscore coté Frotran (voir *) je reçois une erreur à la compilation de ma lib :
1>...\VW_Test_F_Mod.F90(1): error #5192: Lead underscore not allowed


Et si je l'ajoute coté C++ j'ai toujours la même erreur

* :
      SUBROUTINE _VW_Test(VarTest)
      INTEGER*2 VarTest
      VarTest = 10
      END


Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Commenter la réponse de Polack77
Polack77 1100 Messages postés mercredi 22 mars 2006Date d'inscription 15 avril 2018 Dernière intervention - 5 avril 2012 à 15:45
0
Utile
(heeeee oups un petit oubli : et l'ajouter des deux cotés, toujours le même comportement)


Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
Commenter la réponse de Polack77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.