Matlab和C#混合编程
Matlab和C#混合编程
- Matlab生成dll文件
- C#使用dll
工作中有一些老算法在matlab中实现,新项目需要用C#来做,只能用matlab和C#混合编程,在matlab下把老算法编译成dll文件供C#调用,过程中碰到一些问题,简单记录下来,也许能帮助别的小伙伴。
调试中用到的有matlab 2018a和Visual Studio 2019,matlab 2018a支持VS 2019的操作可参考这个博客《让MATLAB2018b支持VS2019的mex配置》,操作过程中可能没有相应的注册表项,按博客中的注册表路径新建项就可以
Matlab生成dll文件
假设有如下的算法:
function y=add(t)
y=2*t;
将以上代码保存到add.m文件中,在matlab命令行中进入add.m所在的目录,执行命令:
deploytool
打开MATLAB Compiler,如下图所示:
选择 Library Compiler,简单设置一下,如下图所示:
最后单击Package,生成dll文件
C#使用dll
新建一个C#工程,在引用里添加刚刚生成的dll,看看add函数的定义:
写两行测试代码:
Class1 class1 = new Class1();MWArray[] data = class1.add(12);
运行的时候提示异常:BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B),如下图所示
打开工程属性设置,将 目标平台 的 首选32位 前面的勾取消掉,如下图所示:
保存后重新运行程序,提示:… MWMCR::EvaluateFunction error …
输出参数太多,如下图所示:
原因是matlab程序中返回一个数,而C#代码要接收一个MWArray数据,修改一下:
Class1 class1 = new Class1();MWArray data = class1.add((MWArray)12);
重新运行,结果符合预期:
写测试代码的时候看走眼了,add的原型定义应该有4个,我只注意到了后两个…
Matlab和C#混合编程相关推荐
- Matlab与C++混合编程(依赖OpenCV)
opencv 2.4.6 和VS2008和matlab混合编程配置_YanhaoZhang_新浪博客 http://blog.sina.com.cn/s/blog_4a1853330102vg2r.h ...
- 基础知识(一)matlab与c++混合编程之环境搭建
Matlab 与c++混合编程方法 开发环境:win7 64位+vs2010+matlab 如果想要让matlab调用c++的函数类,则需要把c++编译成
- 基础知识(二)matlab与c++混合编程之经验笔记
开发环境:win7 64位+vs2010+matlab 学习matlab与c++混合编程的路上有时候会遇到莫名其妙的错误,因此做一下记录: 2015年: 1.由于系统是64位,装的matlab的链接库 ...
- 螺杆泵matlab,基于Matlab与VC++混合编程的螺杆泵转子型线设计
2011年第 3期 (总 227期 ) · 1 · 收稿日期: 2010 - 12 - 23 基金项目:国家高技术研究发展计划资助项目 (2007AA05Z208) 设计研究 文章编号: 100622 ...
- matlab与vs混合编程,matlab与vs混合编程/matlab移植
前言 项目算法中包含了不同编译工具的代码,分别是matlab和VS,需要将二者结合起来,统一在同一个系统工作,此时就要用到matlab和vs混合编程. 在matlab中将.m文件编译生成库文件等供外部 ...
- matlab 与VS混合编程的几个问题
matlab 与VS混合编程的几个问题 根据前一段的时间matlab与VS程序数据互传的程序调试,总结一下编译调试过程中可通遇到的几个问题及处理方法. 1.环境与资源配置 本人用的是matlab201 ...
- MATLAB 部署工具(Deployment Tool)的使用——MATLAB与C#混合编程
MATLAB 部署工具(Deployment Tool)的使用 MATLAB与C#混合编程 对于许多开发者而言,借助MATLAB提供的丰富的矩阵运算,实现需求算法,相比于纯手工实现底层算法具有较高的效 ...
- 在matlab中 编程n,Matlab与C++混合编程 1--在C++中调用自己写的matlab函数
在Visual Studio中使用C++中调用MATLAB程序 在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C++程序调用,这样就可以实现matlab和C++混合编程的目 ...
- C++调用MATLAB程序进行混合编程以及常见问题解决
C++调用MATLAB程序进行混合编程以及常见问题解决 C++调用MATLAB程序方法 MATLAB打包生成DLL动态链接库 VS2017环境配置 程序调用 常见问题解决 参考 C++调用MATLAB ...
最新文章
- .net下绘制统计图工具-请推荐
- day09_读写分离_组件介绍
- jsp 内置对象 session
- Jeremy Keith在 Fronteers 2010 上的主题演讲
- vc 2010 无法输出中文
- mac chrome 打包扩展程序
- 查看java的dump日志并进行分析
- POJ 2528 Mayor's posters 贴海报 线段树 区间更新
- webrtc之SVC实现(十)
- cmd批量修改文件名 增加文字_[Windows应用技巧][cmd篇][批量更改文件名]
- 负反馈放大电路(附Multisim)
- iphone出现android文件夹,为什么iPhone仍限制每个文件夹页面9个应用程序? | MOS86...
- bzoj 5369 最大前缀和
- 打破次元壁球体相互碰撞_打破软件的第四壁
- aurora协议学习之时钟补偿
- 计算机算法的控制结构顺序结构,第3章 算法与控制结构.pdf
- 深圳云计算培训:云计算是怎么分类的
- 算出指定日期在当年的第几周
- 重装mysql 重启服务service mysqld restart一直卡着怎么解决Redirecting to /bin/systemctl restart mysqld.service
- rtx服务器设置 文件,rtx 客户端 服务器设置 配置文件