从julia调用Fortran代码,访问在fortran中动态分配的数组

时间:2019-06-27 17:51:08

标签: fortran julia

我需要调用一些fortran代码,该代码可以动态分配与该基本示例相似的数组。 (与代码中的这个示例不同,我在函数的开头并不清楚数组的大小)

subroutine getIdentity(n,I)
    integer, intent(in) :: n
    integer, allocatable,dimension(:,:), intent(out) :: I
    integer :: j,k
    write(*,*) "creating " ,n, "x", n, "identity matrix"

    allocate(I(n,n))

    do j=1,n
        do k=1,n
        if(k==j) then
            I(j,k) = 1
        else
            I(j,k) = 0
        end if
    end do
    end do
end subroutine getIdentity

当我用此朱莉娅代码调用此代码时:

I = zeros(Int32,1,1)
n = Ref{Int32}(3)
ccall((:__myModule_MOD_getidentity,"./test.so"), Cvoid ,
      (Ref{Int32},Ref{Int32}), n,I)
println(I)

当我看着朱莉娅时,那只是垃圾,不是我期望的身份矩阵。正确的方法是什么?

0 个答案:

没有答案