我是用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/

10-12 14:18