在没有 mex 的情况下从 Matlab 操作C++类

Operating a C++ class from Matlab without mex

本文关键字:Matlab 操作 C++ 情况下 mex      更新时间:2023-10-16

有没有另一种方法可以使用MATLAB调用C++类,并在MATLAB变量上运行其方法?

您可以使用 calllib 调用共享库中的函数。

这将是newlib.h

#ifdef __cplusplus
extern "C"{
#endif
    void *init(int device);
#ifdef __cplusplus
}
#endif

这将是newlib.cpp文件

#include "newlib.h"
#include "yourlib.h"
A *p;
extern "C" void *init(int device)
{
    p = new A;
    p->yourfunction(device);
}

然后在Matlab

clc
LIB_NAME='libnewlib';
INC_NAME='newlib.h';
loadlibrary(LIB_NAME,INC_NAME);
device = 0;
calllib(LIB_NAME,'init', device);
unloadlibrary(LIB_NAME);

这对我来说一直很好。