JNA com matriz de tamanho assumido Fortran
Eu tenho uma sub-rotina Fortran tendo uma matriz de tamanho assumido:
subroutine sub(arr)
implicit none
double precision arr(*)
end subroutine
Eu fiz uma chamada nativa de Java usando JNA, a sub-rotina Fortran é compilada como uma biblioteca compartilhadamylib.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);
}
}
Agora, existe uma maneira de obter (na sub-rotina Fortran) o tamanho da matriz que eu passei nesta sub-rotina sem passar o tamanho real (10 neste caso) como um argumento adicional?
Eu tentei (Fortran)print*, size(arr)
, mas isso gera um erro do compilador:
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)