每当我尝试编译我的非常简单的测试MEX函数时,我就得到一个“未定义的引用‘MxGutouStruts’Calp2.2.EX:Error:LD返回1退出状态”错误。
我用的是Matlab R2019a,mingw-w64 6.3.0。他们给出的示例c文件(explore.c)编译得很好,而且还使用mxGetDoubles()
。
我试过使用mxGetPr()
,尽管他们说他们不推荐它,而且在文档中的matlab R2018a之后它也不应该工作,但它工作得很好。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "mex.h"
#include "matrix.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
mxDouble *vertices;
vertices = mxGetDoubles(prhs[1]);//mxGetPr(prhs[1]);
}
最佳答案
结果发现,修复是很容易的,我不得不使用mex fileName.c
,而不是调用mex -R2018a fileName.c
。
但这并不能解释为什么mex explore.c
可以工作,即使它使用相同的函数,所以如果有人知道为什么,我会非常感兴趣。我假设它与交错复杂的API有关,但可能是tbh。
关于c - 编译时出现mex mxGetDoubles()函数问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57167153/