JNA con Fortran asumió tamaño de matriz
Tengo una subrutina Fortran que toma una matriz de tamaño supuesto:
subroutine sub(arr)
implicit none
double precision arr(*)
end subroutine
Hice una llamada nativa desde Java usando JNA, la subrutina Fortran se compila como una biblioteca compartidamylib.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);
}
}
Ahora, ¿hay alguna manera de obtener (en la subrutina Fortran) el tamaño de la matriz que pasé a esta subrutina sin pasar el tamaño real (10 en este caso) como argumento adicional?
Lo intenté (Fortran)print*, size(arr)
, pero eso da un error de compilación:
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)