Matlab和C#混合编程

  • Matlab生成dll文件
  • C#使用dll

工作中有一些老算法在matlab中实现,新项目需要用C#来做,只能用matlab和C#混合编程,在matlab下把老算法编译成dll文件供C#调用,过程中碰到一些问题,简单记录下来,也许能帮助别的小伙伴。

调试中用到的有matlab 2018aVisual 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#混合编程相关推荐

  1. Matlab与C++混合编程(依赖OpenCV)

    opencv 2.4.6 和VS2008和matlab混合编程配置_YanhaoZhang_新浪博客 http://blog.sina.com.cn/s/blog_4a1853330102vg2r.h ...

  2. 基础知识(一)matlab与c++混合编程之环境搭建

    Matlab 与c++混合编程方法 开发环境:win7 64位+vs2010+matlab 如果想要让matlab调用c++的函数类,则需要把c++编译成

  3. 基础知识(二)matlab与c++混合编程之经验笔记

    开发环境:win7 64位+vs2010+matlab 学习matlab与c++混合编程的路上有时候会遇到莫名其妙的错误,因此做一下记录: 2015年: 1.由于系统是64位,装的matlab的链接库 ...

  4. 螺杆泵matlab,基于Matlab与VC++混合编程的螺杆泵转子型线设计

    2011年第 3期 (总 227期 ) · 1 · 收稿日期: 2010 - 12 - 23 基金项目:国家高技术研究发展计划资助项目 (2007AA05Z208) 设计研究 文章编号: 100622 ...

  5. matlab与vs混合编程,matlab与vs混合编程/matlab移植

    前言 项目算法中包含了不同编译工具的代码,分别是matlab和VS,需要将二者结合起来,统一在同一个系统工作,此时就要用到matlab和vs混合编程. 在matlab中将.m文件编译生成库文件等供外部 ...

  6. matlab 与VS混合编程的几个问题

    matlab 与VS混合编程的几个问题 根据前一段的时间matlab与VS程序数据互传的程序调试,总结一下编译调试过程中可通遇到的几个问题及处理方法. 1.环境与资源配置 本人用的是matlab201 ...

  7. MATLAB 部署工具(Deployment Tool)的使用——MATLAB与C#混合编程

    MATLAB 部署工具(Deployment Tool)的使用 MATLAB与C#混合编程 对于许多开发者而言,借助MATLAB提供的丰富的矩阵运算,实现需求算法,相比于纯手工实现底层算法具有较高的效 ...

  8. 在matlab中 编程n,Matlab与C++混合编程 1--在C++中调用自己写的matlab函数

    在Visual Studio中使用C++中调用MATLAB程序 在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C++程序调用,这样就可以实现matlab和C++混合编程的目 ...

  9. C++调用MATLAB程序进行混合编程以及常见问题解决

    C++调用MATLAB程序进行混合编程以及常见问题解决 C++调用MATLAB程序方法 MATLAB打包生成DLL动态链接库 VS2017环境配置 程序调用 常见问题解决 参考 C++调用MATLAB ...

最新文章

  1. .net下绘制统计图工具-请推荐
  2. day09_读写分离_组件介绍
  3. jsp 内置对象 session
  4. Jeremy Keith在 Fronteers 2010 上的主题演讲
  5. vc 2010 无法输出中文
  6. mac chrome 打包扩展程序
  7. 查看java的dump日志并进行分析
  8. POJ 2528 Mayor's posters 贴海报 线段树 区间更新
  9. webrtc之SVC实现(十)
  10. cmd批量修改文件名 增加文字_[Windows应用技巧][cmd篇][批量更改文件名]
  11. 负反馈放大电路(附Multisim)
  12. iphone出现android文件夹,为什么iPhone仍限制每个文件夹页面9个应用程序? | MOS86...
  13. bzoj 5369 最大前缀和
  14. 打破次元壁球体相互碰撞_打破软件的第四壁
  15. aurora协议学习之时钟补偿
  16. 计算机算法的控制结构顺序结构,第3章 算法与控制结构.pdf
  17. 深圳云计算培训:云计算是怎么分类的
  18. 算出指定日期在当年的第几周
  19. 重装mysql 重启服务service mysqld restart一直卡着怎么解决Redirecting to /bin/systemctl restart mysqld.service
  20. rtx服务器设置 文件,rtx 客户端 服务器设置 配置文件

热门文章

  1. 一个巨牛的人工智能教程
  2. 温室大棚控制系统智能轻松种菜
  3. [导入]网页制作万花筒
  4. Netty入门--传统IO与NIO详解
  5. Spark高效数据分析03、Spark SQL
  6. 网络安全工程师需要考什么证吗?
  7. 市面主流100G白盒交换机/裸机交换机评鉴指南
  8. 了解数据串联五步骤,解锁数据孤岛难题
  9. HAWQ技术解析(十) —— 过程语言
  10. 无所不在,见缝插针,这就是营销!