当前位置: 首页 > news >正文

MSVS C# Matlab的混合编程系列2 - 构建一个复杂(含多个M文件)的动态库:

 前言:

本节我们尝试将一个有很多函数和文件的Matlab算法文件集成到C#的项目里面。

本文缩语:

MT = Matlab


问题提出:


1 我们有一个比较复杂的Matlab文件:

 这个MATLAB的算法,写了很多的算法函数在其他的M文件里面,这样,前面博客的方法就不够用了。会报错:

解决办法如下: 


写在前面的结论:

1 你要用一个外壳函数,封装你的最上层的M文件

2 去掉不必要的M文件间的耦合,把M文件的参数都写到 外壳函数上


 步骤:

1 编译:

1.1 常规操作: 多入口报错

 【报错】只能接受具有单个入口函数的 MATLAB 函数和 MEX 文件作为导出函数。未添加以下文件因为它们不是可接受的文件类型,或者包含在 MATLAB 根目录下: 

MT ,显然不支持多个入口函数的Matlab的源码:

【解决办法,封装成一个大函数】用一个function包起来就好了

function ballfitting(fname)
% Your code here
end

这里笔者,

1.1.1 还没有MT的输出参数的传递。

在MT命令行窗口调用deploytool

对C#的输出,MT里面我们选取如下: 

 1 using the Matlab .NET Assembly

 上图中,是没有MATLAB的输出参数的情况:但是,已经自动,把所有的MT相关的原文件都加了。

1.1.2 有MT的输出参数的传递的外壳函数封装。
function [centers,angle_degree] = findid_v1(filename)... // your codeend

上面,

笔者给MT的外壳函数加了2个输出的的变量,和一个输入变量。

注意:外壳函数的现在的名称,findid_v1似乎没啥用,即使在C#调用,也没有用到。

然后,我们调用在MT中,命令行调用,deploytool,和前面一样。

 上图,自动,把所有的MT相关的原文件都加了的同时,大家应该注意到,

类MTFindid,多了两个输入的参数。

1.2 注意库的版本,最好每次更新M的原文件的时候,选择更新一下版本号

http://www.lryc.cn/news/285353.html

相关文章:

  • 上位机图像处理和嵌入式模块部署(qt图像处理)
  • AI教我学编程之C#类的实例化与访问修饰符
  • 【笔记】Blender4.0建模入门-3物体的基本操作
  • 一文详解 Berachain 测试网:全面介绍与教程,bitget wallet教程
  • 小程序使用echarts图表-雷达图
  • MacM1Pro Parallels19.1.0 CentOS7.9 Install PostgrepSQL
  • Golang 中如何实现 Set
  • 记录一下uniapp 集成腾讯im特别卡(已解决)
  • React16源码: React中的updateHostRoot的源码实现
  • Template -- React
  • HTML 入门手册(一)
  • GPT帮我快速解决工作上的问题案例
  • Day32- 贪心算法part06
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • 【每周AI简讯】GPT-5将有指数级提升,GPT Store正式上线
  • QT上位机开发(MFC vs QT)
  • 线性代数:矩阵的定义
  • k8s 使用cert-manager证书管理自签
  • SpringSecurity+JWT前后端分离架构登录认证
  • 笔试面试题——二叉树进阶(一)
  • Java反射示例
  • 【WinForm.NET开发】实现使用后台操作的窗体
  • 【操作系统和计网从入门到深入】(四)基础IO和文件系统
  • 四.Winform使用Webview2加载本地HTML页面并互相通信
  • 如何有效清理您的Python环境:清除Pip缓存
  • Jira 母公司全面停服 Server 产品,用户如何迁移至极狐GitLab
  • Docker安装配置OnlyOffice
  • 启动低轨道卫星LEO通讯产业与6G 3GPP NTN标准
  • PICO Developer Center 创建和调试 ADB 命令
  • 【VRTK】【PICO】如何快速创建一个用VRTK开发的PICO项目