Passing ein zweidimensionales Array von Fortran nach C

Ich habe Probleme, ein zweidimensionales Array von Fortran an C zu übergeben. Das Folgende ist meine C-Funktion, die nur die Array-Elemente auf dem Bildschirm anzeigt.

#include <stdio.h>
void print2(double *arr , int *n)
{
    int y = *n;
    printf("\n y = %d", y);
    for(int i =0; i<y; i++)
    {
          for (int j = 0; j < y; j++)
              printf("%.6g", *((arr + i*y) + j));
          printf("\n");
    }
}

ein bisheriger Fortran-Code lautet wie folgt:

program linkFwithC
    use, intrinsic :: iso_c_binding
    implicit none
    real, dimension(3,3)::a
    a(1,1)=1
    a(1,2)=2
    a(1,3)=3
    a(2,1)=4
    a(2,2)=5
    a(2,3)=6
    a(3,1)=7
    a(3,2)=8
    a(3,3)=9

    interface
        subroutine print2(a,n) bind( c )
        use, intrinsic :: iso_c_binding
        type(c_ptr)::a
        integer(C_INT)::n
        end subroutine print2   
    end interface

    call print2(c_loc(a),3)
end program linkFwithC

Die Verknüpfung beider Dateien erfolgt durch Erstellen einer statischen Bibliothek für die C-Funktion und Erstellen der LIB-Datei. Sobald die .lib-Datei erstellt ist, füge ich sie dem fortran-Projekt hinzu und führe das fortran-Projekt aus. Der Code wird fehlerfrei ausgeführt und der Wert n wird korrekt angezeigt. Die angezeigten Array-Werte sind jedoch alle falsch.

Bitte hilfe!

anke, An

Antworten auf die Frage(4)

Ihre Antwort auf die Frage