我将matlab程序生成动态链接库,使其可以在VC++中调用。在对话框程序中一调用fwriet和fread函数写、读二进制文件,然后再调用matlab函数时就会出现:“0x7c812afb 处未处理的异常: Microsoft C++ 异常: 内存位置 0x0013c7cc 处的 mwException”,不调用fwriet和fread,只运行matlab程序时没有问题。
调试欢乐多
只调用fwriet和fread有问题么?
只调用fwriet和fread都可以,就是不能调用完fwriet或fread再调用matlab程序。
{
emdcal(1,imf,data);//这是我dll里的函数
}
catch (const mwException& erro)
{
CString str;
str = erro.what();
MessageBox(str,NULL,NULL);
}
然后再运行弹出错误提示Undefined function or method 'emdcal' for input arguments of type 'double'.
百度后说在matlab分类里找到类似问题说是路径的问题,采用m文件编辑器的set path解决。但我是混合编程不可能原样照搬,matlab导出的除了lib,dll,h这三个文件外,就只有ctf文件可能有关了(mcc的时候用-C参数生成),ctf文件记得在北航那本matlab和vs混合编程上说是所有m源文件和数据打包AES加密放在里面,于是我把ctf文件拷贝到vs目录下再运行就正常了。希望能够给碰到相似问题的一些参考。