c读取mat文件,调用dll函数,返回值写入mat文件,mxArray内存管理松散,需要最后销毁。
#include "stdafx.h"
#include <stdlib.h>#include "mat.h"
#include <iostream>
#include "libAutoExtract.h"
#include <fstream>
#pragma comment(lib, "mclmcrrt.lib" )
#pragma comment(lib,"libAutoExtract.lib")
using namespace std;
int main()
{
MATFile *pmat = NULL;
MATFile *pmatFile = NULL;
const char *file;
mxArray *pa;
if (!libAutoExtractInitialize())
{
cout << "Could not initialize" << endl;
return -1;
}
file = "E://alogrithmprogramming//C++//cmatdll//cmatdll//Y.mat";//读入初始数据
pmat = matOpen(file, "r");
if (pmat == NULL) {
cout << "Error opening file" << endl;
return 1;
}
pa = matGetNextVariable(pmat, &name);//返回指向文件头文件信息的指针,指针类型为*mxArray;
mxArray* FV;
FV = NULL;//必须初始化
mlfAutoextract(1,&FV, pa);//m文件生成的dll的函数
// 生成.mat文件
pmatFile = matOpen("A.mat", "w");
matPutVariable(pmatFile, "A", FV);
mxDestroyArray(pa);
mxDestroyArray(FV);
matClose(pmatFile);
matClose(pmat);
libAutoExtractTerminate();
//system("pause");
return 0;
}