[Interopérabilité] Problème d'interfaçage fortran/C
Salut,
J'ai une structure C commençant par un underscore, et avec laquelle je veux faire un lien en fortran2003. Le problème est que fortran n'autorise pas ce type de nom :
Code:
1 2 3
| type, bind(C) :: _struct
....
end type _struct |
Je sêche ...
------- Je corrige -------------
Apparemment, le nom de la structure importe peu.
Par contre, peut-on, à partir de fortran, accéder au contenu de la structure C ?
Exemple, peut-on accéder à vbox ainsi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| struct _GtkDialog
{
GtkWidget *vbox;
GtkWidget *action_area;
};
_GtkDialog *d
GtkWidget *vb
----------
type,bind(c) :: dialog
type(c_ptr) :: vbox
type(c_ptr) :: action_area
end type dialog
type(dialog), pointer :: pd=>null()
type(dialog), target :: td
call c_f_pointer(d,pd) ; td = pd
vb = c_loc(td%vbox) |
... et de manière générale, si on admet que les noms des champs n'ont pas d'importance, comment deux structures peuvent-elles être interopérables ?
---------- dernière correction ---------------
les réponses sont là :
http://publib.boulder.ibm.com/infoce...erop-types.htm