本帖隐藏的内容
如果是第一次使用,则要设置一下Visual C++6.0 编程环境中的include和lib的路径指向。1 配置:Visual C++6.0 编译环境的设置:通过菜单 Tools(工具)/Options(选项),打开Visual C++6.0设置属性页,进入 Directorie页面(选项页面)
在 Show Directories for(目录列表)下拉列表中选择Include Files
添加路径:E:\Program Files\MATLAB\R2010a\extern\include(这是我电脑中Matlab的安装路径)
再选择下拉列表中的 Library Files
添加路径:E:\Program Files\MATLAB\R2010a\extern\lib\win32\microsoft
2,试验:
新建一个工程(win32 Application Console)
建立空工程
新建一个C++文件
代码如下:
- #include <iostream.h>
- #include <iomanip.h>
- #include <stdlib.h>
- #include <windows.h>
- #include "engine.h"
- #include "mat.h"
- void main()
- {
- double* b;
- double a[9]={1,4,7,2,5,8,3,6,9};
- const char* file="mymat.mat";
- mxArray* Ain;
- mxArray* Aout;
- mxArray* SV;
- Engine* ep;
- MATFile* mat;
- mat=matOpen(file,"w");
- Ain=mxCreateDoubleMatrix(3,3,mxREAL);
- mxSetClassName(Ain,"z");
- // 复制文件
- memcpy((char*)mxGetPr(Ain),(char*)a,sizeof(a));
- // Ain以z的名称放入到mat文件中
- matPutVariable(mat,"z",Ain);
- matClose(mat);
- mxDestroyArray(Ain);
- mat=matOpen(file,"r");
- Aout=matGetVariable(mat,"z");
- // 开启Matlab的引擎
- if(ep=engOpen(NULL))
- try
- {
- engPutVariable(ep,"z",Aout);
- engEvalString(ep,"sv=svd(z);");
- // 从引擎中拿出变量
- SV=engGetVariable(ep,"sv");
- // 获取地址
- b=mxGetPr(SV);
- cout<<"A矩阵"<<"\n";
- for(int j=0;j<=2;j++)
- {
- cout<<setw(16)<<b[j];
- }
- cout<<"\n";
- engClose(ep);
- matClose(mat);
- mxDestroyArray(Aout);
- mxDestroyArray(SV);
- }
- catch(...)
- {
- cout<<"开启失败"<<"\n";
- }
-
- }
然后在工程的设置->连接的对象/库模块
加入
libeng.lib libmx.lib libmat.lib
就OK啦
编译和运行都是顺利通过的!