我在將一個二維數組從Fortran傳遞到C時遇到了問題。以下是我的C函數,它只是在屏幕上顯示數組元素。從Fortran傳遞一個二維數組到C
#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");
}
}
我的Fortran代碼到目前爲止是這樣的:
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
我連接這兩個文件的方式是通過創建C函數靜態庫和建立的.lib文件。建立.lib文件後,我將它添加到fortran項目並運行fortran項目。代碼運行時沒有錯誤,n值正確顯示;但是,顯示的數組值都是錯誤的。
請幫忙!
感謝, 阿納斯
你打電話給print2(沒有fortran專家)。如果它是0,那麼它將不會有輸出 –
這是真的,我剛剛添加了電話,並得到以下兩個錯誤: – Anas
錯誤#6631:A在使用顯式接口調用過程時,必須存在非可選實參。 [A]錯誤#6631:使用顯式接口調用過程時,必須存在非可選的實際參數。 [n] – Anas