所以我试图创建一个Mex文件,打开一个到数据记录器的连接,我想避免来回传递设备ID。我试图使用一个外部变量来存储设备ID,但是我似乎无法编译。
所以我要做的是这样的:
文件A打开连接:

#include ...

int devID;

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

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

extern int devID;

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

文件A编译得很好,但是当我试图编译文件B时,我得到:
 unresolved external symbol "int devID"

我很感激你的帮助。

最佳答案

尝试使用mexMakeArrayPersistent使变量持久化。不过,我认为您只需要使用一个mexFunction(),这将用于打开或关闭连接,具体取决于输入标志。
或者,可能有一个函数从数据记录器返回一个连接时存在的设备ID,例如devID = checkConnection();

09-16 19:05