[PLUTO-devel] linkink eterogeneo fortran-C++
Andrea Raimondi
rainaple a tin.it
Mer 29 Ott 2003 08:28:55 CET
Gregorio D'Agostino wrote:
> Cari Pinguinisti
Ciao,
> In particolare mi piacerebbe sapere come si
> devono chiamare le routine in C++ per essere
> agganciate (linked) nel fortran e viceversa.
Allora il problema è semplice: siccome il C++
lavora con gli oggetti, tutte le routines sono
collegate a degli oggetti. Per fare in modo che il
compilatore riconosca gli overload( sovraccarichi )
delle varie routines, il compilatore applica ai nomi
delle stesse una serie di modifiche che
rispecchiano i parametri corrispondenti.
Questo processo è chiamato "name mangling".
Per far "vedere" le routines C++ agli OBJ del
fortran bisogna agganciare una "extrn C" a tutte le
funzioni da fargli vedere.
Quando il tuo collega ha detto "tutte le routines del
fortran sono statiche" probabilmente si riferiva al
fatto che devi, in C++, dichiararle come STATIC.
Quindi, le tue dichiarazioni Fortran nei moduli C++
saranno tipo:
extrn static void/Int/quellochetepare MiaFunzione;
Mentre le tue dichiarazioni C++ da esportare nel
file OBJ saranno tipo:
extrn C {
static void MiaFunzioneCpp;
}
Questo per sommi capi, visto che di C++ ci capisco
poco... se c'è qualcuno piu' esperto di uno dei due
aspetti, per favore si faccia avanti, così tutti
impariamo qualcosa di nuovo.
> Ringraziando in anticipo Vi saluto cordialmente.
Prego,
> Gregorio D'Agostino
Andrea
Maggiori informazioni sulla lista
pluto-devel