C++/Matlab 混合编程
这里主要说C++调用Matlab ,当然,反过来也行
Matlab
首先写好你需要编译成C++的.m文件
在matlab窗口输入
mex -setup
mbuild -setup
默认C,可以改成C++

然后继续输入
deploytool
选择第三个

按顺序操作:定义库的名称,选择C++ Shared Library,添加你写好的.m文件,Package

然后生成的三个文件夹下的_only内就是生成好的库文件

没有matlab环境的VS编程环境配置
先在官网下载安装MCR,注意和写.m文件使用的matlab的版本一致
点击这个链接,里面每个版本对应的detail说明书可以看到支持的VS版本
然后重启!然后重启!然后重启!
VS配置matlab环境
1. 头文件路径配置:extern\include
2. 库文件路径配置:extern\lib\win64\microsoft
链接器.lib名称加上
3. 按第一部分最后得到的文件夹设置你所编译的.m文件成的.lib库文件配置:参考https://blog.csdn.net/u011913417/article/details/102679274,实测按如下步骤:
3.1 .lib和.h按第一部分最后路径配置
3.2 .dll放到和".vcxproj"文件同目录
3.3*(重点) VS里面调试–>窗口–>异常设置–>Win32 Exceptions勾选去掉
cpp文件
开头
#pragma comment(lib, "mclmcrrt.lib")//引入的mat库文件 #pragma comment(lib, "mclmcr.lib")//同上 #pragma comment(lib, "yourMlib.lib")//自己的库文件 #include "yourMlib.h"//自己的头文件
调用
//开始调用,初始环境 if (!myode23tbInitialize()) //语句是***Initialize(),***用编译的matlab包名称替换 { cout << "failed" << endl; system("pause"); } myode23tb(); //调用主要函数 //结束调用 myode23tbTerminate(); mclTerminateApplication();
初始化环境会加载许多dll文件,过程会比较慢(本机子接近15s)
参考:
https://www.cnblogs.com/ph1sh/p/14710686.html
https://blog.csdn.net/u013346193/article/details/80542879
浙公网安备 33010602011771号