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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通