所以我正在尝试创建一个打开与数据记录器连接的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;
}
我将不胜感激。
答案 0 :(得分:0)
尝试使用mexMakeArrayPersistent使变量持久化。我认为你只需要使用一个mexFunction()
,它将用于打开或关闭连接,具体取决于输入标志。
或者,可能存在来自数据记录器的函数,该函数在存在连接时返回设备ID,例如, devID = checkConnection();