有什么方法可以快速将C / C ++函数公开为MATLAB MEX文件?

时间:2019-04-06 09:37:03

标签: matlab mex

我想自动生成C源MEX文件,以将C函数公开给MATLAB。我希望找到类似于Boost.Python的东西,它使用C ++模板元编程来包装现有的C ++代码,而无需修改基础源。请注意,我主要感兴趣的是现在公开函数,而不是类实例。如果没有库,那是否有比模板元编程更好的方法来解决此问题?我已经尝试过MATLAB的loadlibrary函数,但认为对于大多数与之合作的最终用户来说,其用法并不直观。

当前,我一直在手动编写C源MEX包装器,这非常耗时,最重要的是,它很难维护包装器。我的MEX包装器没有问题,只是通过MEX将函数公开给MATLAB所需的时间比将它们公开给Python所需的时间高出几个数量级。

此示例显示了我想做什么的想法。我想将TimesTwo函数公开给MATLAB,这目前需要我编写一个mexFunction来检查输入/输出参数计数,将MATLAB数组指针转换为C数据类型,调用C函数TimesTwo,然后将结果分配给MATLAB输出参数。     #include“ mex.h”     #include“ some_template_library.hpp”

// This is the function I want to expose
double TimesTwo(double in)
{
    return 2*in;
}

// This macro would expand to generate the mexFunction gateway
// It would also define the data types and perform error checking
// I realize the actual implementation would need to be more complex than this
EXPOSEFUNCTION(TimesTwo,double in, double out)

0 个答案:

没有答案