初始化数组A,数组长度10SUBROUTINEINITARRAY(A)!DEC$ ATTRIBUTES DLLEXPORT::INITARRAYINTEGER::IDOUBLE PRECISION,DIMENSION(10)::ADOI=1,10,1A(I)=IEND DOEND SUBROUTINEINITARRAY! 数组A的所有元素相加并返回DOUBLE PRECISIONFUNCTIONARRAYSUM(A)!DEC$ ATTRIBUTES DLLEXPORT::ARRAYSUMDOUBLE PRECISION::RESDOUBLE PRE...
自定义function的调用案例如下, 输出结果为: 此外,在创建数组的时候,可以采用implicit do的方式直接确立数组中的内容, 上面代码中,A_mat 是一个通过改变 A2_vector 尺寸得到的矩阵。reshape函数中的order十分重要,因为默认的排列顺序是从上往下排列,order = (/2,1/)可以要求数组从左到右排列。 6. subroutine 子...
1 8101297060 end program main 2.2.3.3 回调函数 除了变量类型能作为函数的参数,函数也能作为函数的参数进行传递,这种函数叫做回 调函数(callback function). ! 函数作为函数的参数 module callback_func abstract interface ! 抽象接口 pure subroutine fcn(x, y, z) integer, intent(in) :: x, y integer,...
自定义function的调用案例如下, 输出结果为: 此外,在创建数组的时候,可以采用implicit do的方式直接确立数组中的内容, 上面代码中,A_mat 是一个通过改变 A2_vector 尺寸得到的矩阵。reshape函数中的order十分重要,因为默认的排列顺序是从上往下排列,order = (/2,1/)可以要求数组从左到右排列。 6. subroutine 子...
Microsoft visual studio 2010 C++调用Fortran子函数-混合编程
endsubroutine endmoduleone 在上面的Fortran代码里定义了一个CallfuntoAdd(f, b, c, a)方法,可以通过!DEC$被导出到 dll 文件中。这里f 是一个回调函数, b 是integer类型, c是real*8类型, a 是一个一维数组。 publicclassc1 { [UnmanagedFunctionPointer(CallingConvention.Cdecl)] ...
subroutine ExecFunc(f) implicit none real,external ::f !声明参数f是个函数 write(*,*) f(1.0) !执行输入函数f return end real function func(num) implicit none real ::num func = num*2 return end 关键字Intrinsic表明所声明的sin是fortran的库存函数,而不是一个变量...
本程序采用Module将代码块进行封装,程序中用到的变量、function、subroutine,整理到Module中,用的时候只需要Use一下就可,如行48。程序中一些语法、注意的细节将会在以后专门设立一个Fortran的栏目中进行讲解。 木木最开始用的编译器是VS+IVF,后来发现VS占用系统资源很多,卸载也很麻烦,用起来不顺手,现在我用的是Simply...
END FUNCTION subroutine func01( a ) bind(C,name="func01") !DEC$ ATTRIBUTES DLLEXPORT :: func01 implicit none character(len=1), dimension(90) , intent(in) :: a character(len=30), dimension(3) :: b integer*4 :: count,i,j
总结,上述这种方法可以成功调用fortran的function,但是对于subroutine和module作者还没有尝试成功,不过由于作者使用matlab时主要使用function进行一些小功能的编写,所以逻辑和使用习惯上没有特别大的差别,故目前就先这样,后面有空了再探索一下。 感谢观看,作者看番去也。。)} ...