报错结果如上图,是在使用mex指令调用NIDAQmx.h头文件处出错,如果出现的是找不到指令或者指令未定义的情况,请查看一下自己程序的工作目录中是否放置有所需要的头文件和源文件,其次请检查自己的C程序代码中是否以void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])作为主函数。
如果上述两处均没有问题,那么问题出在库目录的位数上。查看自己电脑的位数可以右键单击左下角微软微标选中“系统”选项,可直接查看电脑位数。
由于我的电脑是64位机,推测上述引用库目录文件是32位文件,因此matlab不能使用,才会在默认目录下去寻找相应的文件,发生报错。查看自己电脑的64位库目录NIDAQmx.lib文件的方法可以点击这里,简言之,就是在Program Files (x86)\NationalInstruments\Shared\
ExternalCompilerSupport\C\lib64\msvc 目录下有一个NIDAQmx.lib文件,将之复制到你当前目录或者记录下这个文件的当前位置都是可以的。
然后,在matlab命令行中输入如下指令:
mex filename.cpp '-LC:\Users\UserName\XXXX\' -lNIDAQmx.lib
请注意,此处的调用的全部库目录,包括你自己写的库都应该采用
'-L文件夹路径(一定以\结尾)' '-l文件全名'
的格式,不然上述skipping错误将会继续发生。
要是在上述目录中没有找到NIDAQmx.lib,应该是安装NI-DAQmx软件的时候,没有勾选推荐的C语言支持,请回到NI Package Manager中重新安装NI-DAQmx,安装时格外留意勾选推荐内容。
参考文献: