Appels croises C/F90

souslikP Messages postés 1 Date d'inscription lundi 13 mars 2006 Statut Membre Dernière intervention 13 mars 2006 - 13 mars 2006 à 15:00
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 13 mars 2006 à 20:02
Bonjour,

J'ai un main C qui appelle du F90 en lui passant une chaine de caracteres. Probleme sur PC avec Visual C++, ca plante au debugger (passage des arguments en F90) et sous purify, j'ai un BSR.
Est-ce que quelqu'un peut m'aider ?

Voici mon code :
MonMain.cpp
#include <stdio.h>
#include <string.h>
extern "C" void fonction_(char *, int*);
int main()
{
int lg_chaine = 0;
char chaine[30];
strcpy(chaine, "chaine_C++");
lg_chaine = strlen(chaine);
fonction_(chaine, &lg_chaine);
printf("chaîne finale = %s\n", chaine);
printf("longueur chaîne = %d\n", lg_chaine);
return(0);
}

fonction.f90
subroutine fonction(chaine, lg_chaine)
character(len=*), intent(inout) :: chaine
integer, intent(inout) :: lg_chaine
chaine = trim(chaine) // ' et chaine_Fortran'
lg_chaine = len_trim(chaine)
end subroutine fonction

____________________________
SP

1 réponse

cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
13 mars 2006 à 20:02
Hum, bizare, chez moi ça marche nickel, déjà tu as essayé l'appel à cette fonction à partir d'un programme fortran, est-ce que ça fonctionne correctement ?
Sinon, j'ai trouvé un truc dans le style sur le net, je sais pas si c'est bien util, mais au cas ou.
extern "C" { __stdcall fonction_(char *, int*); }
Y'a peut-être une option pour des librairies à passer à l'édition des liens aussi.

Good Luck.

Bouba
0
Rejoignez-nous