vs下c++调用matlab
来源:互联网 发布:法语之言能无从乎 编辑:程序博客网 时间:2024/05/18 14:15
使用的环境:VS2015、MATLAB2016(安装路径E:\MATLAB)
新建一个工程,这里选择控制台程序,直接创建。
1. 设置项目属性,在C/C++,附加包含目录 E:\MATLAB\R2016b\extern\include
2. 设置项目属性,在链接器-常规,附加库目录 E:\MATLAB\R2016b\extern\lib\win64\microsoft
3. 设置项目属性,在链接器-输入,附加依赖项 libmx.lib;libmat.lib;libeng.lib;mclmcrrt.lib;
这里注意matlab是x64还是x86,其中库的路径名称会不一样;同时注意vs配置管理器的编译平台与之一致。
如果上述设置未完成,则会提示“无法解析的外部符号”。
然后写入测试代码
#include <engine.h>#include <math.h>#include <iostream>using namespace std;#define PI 3.1415926int main(){/*Engine *ep;ep = engOpen(NULL);engEvalString(ep, "x=0:0.05:2*pi;y=sin(x);plot(x,y,'.b')");*/const int N = 100;Engine *ep; //定义Matlab引擎指针。 if(!(ep = engOpen("\0"))) //测试是否启动Matlab引擎成功。 {cout << "Can't start MATLAB engine!" << endl;return EXIT_FAILURE;}double *X = new double [N];double *Y = new double [N];double *Z = new double [N];// Generate uniform numbers between -2*PI and 2*PI. for (int index = 0; index < N; index++) {double step = 4 * PI / N;double x = step*index - 2 * PI;X[index] = x;cout << X[index] << " ";// Define Y as cosine values of x. Y[index] = cos(x);// Define Z as sine values of x. Z[index] = sin(x);}//定义mxArray,为1行,N列的实数数组。 mxArray *xx = mxCreateDoubleMatrix(1, N, mxREAL);mxArray *yy = mxCreateDoubleMatrix(1, N, mxREAL);mxArray *zz = mxCreateDoubleMatrix(1, N, mxREAL);//将c++数组中的值复制到对应的mxArray中 memcpy(mxGetPr(xx), X, N * sizeof(double));memcpy(mxGetPr(yy), Y, N * sizeof(double));memcpy(mxGetPr(zz), Z, N * sizeof(double));//将mxArray数组写入到Matlab工作空间 engPutVariable(ep, "x", xx);engPutVariable(ep, "y1", yy);engPutVariable(ep, "y2", zz);//向Matlab引擎发送画图命令。 engEvalString(ep, "plot(x, y1, '-.ms'); hold on; plot(x, y2, '-go');");//销毁mxArray数组xx和yy。 mxDestroyArray(xx);mxDestroyArray(yy);//Use cin.get() to make sure that we pause long enough to be able to see the plot. cout << "Hit any key to exit!" << endl;cin.get();//关闭Matlab引擎。 engClose(ep);//释放指针内存 delete X;delete Y;delete Z;system("pause"); return 0;}
编译之,显示通过,运行时候需要稍等片刻,运行结果如下:
如果编译可以通过,但是运行时候提示缺失dll,则应该设置环境变量:
我的电脑-属性-高级系统设置-环境变量
找到系统环境变量下Path,编辑之,再弹出的窗口中新建变量 E:\MATLAB\R2016b\bin\win64,然后点击确定
重新运行程序即可,如果依旧提示缺失dll,重启电脑即可。
这里尝试过直接添加环境变量,但我测试不能通过,依旧提示缺失dll,用上面的方法可以解决。
0 0
- VS下调用Matlab引擎
- vs下c++调用matlab
- vs和MATLAB调用
- VS调用matlab
- vs c调用matlab生成的动态库
- C/C++ VS中调用matlab函数的方法
- linux下c调用matlab总结
- C/C++下调用matlab函数
- 在Matlab下利用VS调试C/C++代码
- C程序调用matlab (Win8 64 bit + VS 2013 + Matlab R2014a)
- VS使用C语言调用控制台执行Matlab编译出的exe文件提示找不到matlab
- VS调用Matlab计算引擎
- VS下C的dll打包与调用
- C++Builder下调用Matlab的COM总结
- C语言调用Matlab
- matlab调用C文件
- Matlab调用c程序
- C#(VS2008)调用Matlab
- 欢迎使用CSDN-markdown编辑器
- php的技术应用
- 位操作基础篇之位操作全面总结
- python hadoop stream 提交多模块python
- 一洽CEO:一洽在线客服生态链的使命
- vs下c++调用matlab
- php常见的六种设计模式
- Linux学习篇第二章~unit2
- java File类遍历出文件夹下的所有文件
- Android error: “Apostrophe not preceded by \” 解决办法
- 5064. 友好城市
- 浅谈mysql的搜索引擎之MyISAM和InnoDB的异同
- python使用遇到的问题
- 构造函数