外部变量mex文件

时间:2015-10-13 09:34:58

标签: c matlab mex

所以我正在尝试创建一个打开与数据记录器连接的Mex文件,我希望避免必须来回传递设备ID。我尝试使用外部变量来存储设备ID,但我似乎无法编译。 所以我想做的事情看起来有点像这样: 文件A打开连接:

on.exit(dbUnloadDriver(drv), add = TRUE)

然后文件B应该能够通过以下方式访问devID:

#include ...

int devID;

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{   
    devID = openConnection();
    return;
}

文件A编译正常但是当我尝试编译文件B时,我得到:

#include ...

extern int devID;

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{   
    closeConnection(devID);
    return;
}

我将不胜感激。

1 个答案:

答案 0 :(得分:0)

尝试使用mexMakeArrayPersistent使变量持久化。我认为你只需要使用一个mexFunction(),它将用于打开或关闭连接,具体取决于输入标志。

或者,可能存在来自数据记录器的函数,该函数在存在连接时返回设备ID,例如, devID = checkConnection();