用Python接口从MATLAB编码器获取的matlabc文件

用Python接口从MATLAB编码器获取的matlabc文件,python,c,matlab,matlab-coder,ctype,Python,C,Matlab,Matlab Coder,Ctype,我正在尝试将一些MATLAB文件转换为Python。我使用MATLAB编码器生成C代码,然后在库中编译所有内容。我现在正在尝试为Python制作包装 如下所示:中的data_是一个图像,makePyramid函数的输出是一个长度level的结构,有3个字段img、gradX和gradY def TestEmxAPI(data_in): #class Opaque(ctypes.Structure): # pass sz = (data_in.shape)

我正在尝试将一些MATLAB文件转换为Python。我使用MATLAB编码器生成C代码,然后在库中编译所有内容。我现在正在尝试为Python制作包装

如下所示:中的
data_是一个图像,
makePyramid
函数的输出是一个长度
level
的结构,有3个字段
img
gradX
gradY

def TestEmxAPI(data_in):

    #class Opaque(ctypes.Structure):
    #    pass

    sz = (data_in.shape)

    class Pyr(ctypes.Structure): 
        _fields_ = [('img', (ctypes.c_double*sz[0])*sz[1]),
                    ('gradX', (ctypes.c_double*sz[0])*sz[1]),
                    ('gradY', (ctypes.c_double*sz[0])*sz[1])] 

    nrows = ctypes.c_int(sz[0])
    ncols = ctypes.c_int(sz[1])
    level = 1
    blur = -1
    win = np.array([10.,10.,10.])
    winc = (ctypes.c_double *3)(*win)

    pp=Pyr()

    in_emx = EMX.emxCreateWrapper_real_T(ctypes.c_int(data_in.ctypes.data), 
                                         nrows, ncols) 

    EMX.emxCreateWrapper_struct0_T.argtypes = (ctypes.POINTER(Pyr), 
                                               ctypes.c_int,
                                               ctypes.c_int)
    EMX.emxCreateWrapper_struct0_T.restype = ctypes.POINTER(Pyr)
    ou_emx = EMX.emxCreateWrapper_struct0_T(pp,sz[0], sz[1])

    EMX.makePyramid_2D(in_emx, 
                       ctypes.c_double(level), 
                       ctypes.c_double(blur), 
                       winc, 
                       ou_emx)

    return pp
我现在犯了一个严重的错误:

WindowsError: exception: access violation reading 0x0000000000000014

如何使其工作?

使用调试器识别导致问题的行。介绍了执行此操作的示例。您还可以使用像SWIG这样的包装生成器来生成包装。下面是一份展示如何将SWIG与MATLAB CoderTanks Ryan结合使用的报告,请发表评论。你发送的stakoverflow链接提出的解决方案给了我很大的启发。因此,我想使用matlab编码器已经生成的包装器。但我想我用错了。以防在此处找到包含所有详细信息的项目:使用调试器识别导致问题的行。介绍了执行此操作的示例。您还可以使用像SWIG这样的包装生成器来生成包装。下面是一份展示如何将SWIG与MATLAB CoderTanks Ryan结合使用的报告,请发表评论。你发送的stakoverflow链接提出的解决方案给了我很大的启发。因此,我想使用matlab编码器已经生成的包装器。但我想我用错了。以防在此处找到包含所有详细信息的项目: