JNA mit Fortran angenommene Größe Array
Ich habe eine Fortran-Subroutine, die ein Array mit angenommener Größe verwendet:
subroutine sub(arr)
implicit none
double precision arr(*)
end subroutine
Ich habe einen systemeigenen Aufruf von Java mit JNA durchgeführt. Die Fortran-Unterroutine ist als gemeinsam genutzte Bibliothek kompiliert.mylib.so
:
import com.sun.jna.Library;
import com.sun.jna.Native;
public class Wrapper {
public interface MyLib extends Library {
public void sub_(double[] arr);
}
public static void main(String[] args) {
System.setProperty("jna.library.path", ".");
MyLib lib = (MyLib) Native.loadLibrary("mylib.so", MyLib.class);
double[] myarr = new double[10];
lib.sub_(myarr);
}
}
Nun, gibt es eine Möglichkeit (in der Fortran-Subroutine) die Größe des Arrays zu ermitteln, das ich in diese Subroutine übergeben habe, ohne die tatsächliche Größe (in diesem Fall 10) als zusätzliches Argument zu übergeben?
Ich versuchte (Fortran)print*, size(arr)
, aber das gibt einen Compilerfehler:
print*,size(arr)
1
Error: The upper bound in the last dimension must appear in the reference to the assumed size array ‘arr’ at (1)