我是用Fortran和C语言编程的新手,对Matlab.m
文件有一定的经验。
我试图从Matlab调用Fortran子程序,并为其构建一个mexfunction在这种情况下,我似乎必须使用来自Matlab的mx_
函数来转换以前调用Fortran子程序的数据。
我的问题是用gfortran
编译可用的函数是用编译器下载的bind
中的mexinterface
-ed函数我需要使用未包含在mxgetfield
中的mexinterface
,我尝试将这段代码添加到mexinterface
:
function mxgetfield(pm,ind,s) bind(c,name = ‘MXGETFIELD’)
import c_int, c_ptr, c_char
integer(c_int) :: pm, ind
character(c_char) s(*)
type(c_ptr) :: mxgetfield
end function mxgetfield
编译器编译它没有问题,但是当用一个结构作为输入调用created
.mexw32
时,Matlab将关闭我的mexfunction中出现问题的行是:call c_f_pointer(mxgetfield(prhs(1),1,”Field1”), Field1_pr, [9])
有人能告诉我如何使mxgetfield对我可用吗?
最佳答案
接口块中mxGetField的前两个参数需要VALUE属性第一个参数是指针,最好用C_PTR来表示,而不仅仅是整数如果确实使用整数,则使用C_INTPTR_T整数更好第二个论点很可能更适合用C_大小的东西来表示。
关于c - 从gfortran将mxgetfield添加到mexinterface,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23780028/