MATLAB: Help with Mex function

mex

Hello, I'm having trouble getting a mex function to work. I think I've narrowed down the problem but anytime I try to fix anything Matlab shuts down.
I want to send a nested struct through a mex file myvar.myfield.mysubfield, where subfield is a 3-d position vector. I want to do mymexfunc(myvar).
mwPointer mxGetField
mwPointer mxGetPr
mwPointer mxcreatedoublematrix
mwIndex index
mwpointer var_ptr, fd_ptr, sfd_ptr
var_ptr = mxgetpr(prhs(1))
fd_ptr = mxgetfield(var_ptr,1,'myfield')
sfd_ptr = mxgetfield(fd_ptr,1,'mysubfield')
myvar%myfield%mysubfield = fpgetpr(sfd_ptr)
copy mxcopyptrtoreal8(sfd_ptr,myvar%myfield%mysubfield,size)
Matlab crashes when I try to do this and I wanted to know if anyone can see what I'm doing wrong.

Best Answer

mwPointer mxGetField
mwPointer mxGetPr
mwPointer mxcreatedoublematrix
mwIndex index
mwpointer var_ptr, fd_ptr, sfd_ptr
fd_ptr = mxgetfield(prhs(1),1,'myfield') ! Result is mxArray pointer
sfd_ptr = mxgetfield(fd_ptr,1,'mysubfield') ! Result is mxArray pointer
var_ptr = mxgetpr(sfd_ptr) ! Result is real*8 pointer
copy mxcopyptrtoreal8(var_ptr,myvar%myfield%mysubfield,size)
I would use different names for the "size" and "index" variables, since those are names of Fortran intrinsic functions.