c#调用matlab生成的COM DLL,Matlab GUI程序封装成exe文件并在不安装Matlab的电脑上运行

最近根据需求用Matlab写了一个简单的软件,但需要安装到其他电脑上运行,倒腾了很久最终成功在其他电脑上运行,现将方法共享给大家。
安装方法:
①程序封装
首先用Matlab写完程序并封装好(我用的是Matlab2018b,封装的时候就用matlab自带的APP封装程序就好[就是黑框框那个程序]):在这里插入图片描述
然后会在指定位置生成这样一个文件夹:在这里插入图片描述
②安装MCR环境
打开生成的文件夹之后选择这个文件夹中的“.exe”文件并运行:在这里插入图片描述
这时候可能会提示你缺少“Runtime”这个东西(忘记截图~~!),此时程序还不能运行。这是因为计算机中缺少MCR这个东西(MCR就包含了一些Matlab的库及函数,全名叫Matlab Compiler Runtime),因此需要安装MCR。(我没试过网友说的从Matlab里面输入命令直接安装的方法,我都是手动安装。。。)

打开“for_redistribution”这个文件夹中的“MyAppInstaller_web.exe”,选择默认路径安装好MCR环境即可(安装过程略慢,耐心等待就行了):
在这里插入图片描述
安装完成之后打开“for_redistribution_files_only”中的.exe文件就能运行你写的GUI程序了。(我在这里没有配置环境变量也能运行。。。大家可以试一下,不过第一次打开的时候很慢很慢,所以要耐心等待)
程序打开之后的样子:
在这里插入图片描述
在其他电脑上运行该程序
首先要确定:
1、目标电脑上是否有安装MCR;
确定要安装的MCR版本(版本不对也不能运行):
打开这个文件夹中的“Readme”:
在这里插入图片描述
这个“9.5”就是你要下载的MCR版本:(可以到MCR官网上下载或者留言我通过百度网盘分享(只有2018b版本的。。。))
在这里插入图片描述

2、确定你所用的系统和目标电脑系统一致!!!(比如我是64位Win10写的GUI程序封装好之后在64位Win7系统的电脑上是不能运行的!但是将程序拷贝到64位Win10电脑上就可以了!!!!)
3、将你打包好的程序拷贝到目标电脑上就能使用了~

最后祝愿大家程序运行顺利~嘿嘿

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在C#调用MATLAB封装DLL,需要以下步骤: 1. 在MATLAB中编写并编译DLL,确保它可以在MATLAB中正常运行。可以使用命令行函数“mcc”来编译MATLAB代码并生成DLL。 2. 在C#项目中添加对生成DLL的引用。右键单击项目,选择“添加引用”,然后浏览到DLL文件并选择它。 3. 在C#代码中引入相关的命名空间,如“MathWorks.MATLAB.NET.Arrays”、“MathWorks.MATLAB.NET.Utility”和“MathWorks.MATLAB.NET.ComponentRuntime”。 4. 创建MATLABCOM对象或.NET程序集对象,并使用它们来调用DLL中的函数。可以使用“Type.GetTypeFromProgID”函数来创建COM对象,或使用“Assembly.LoadFile”函数来加载.NET程序集对象。 5. 调用DLL中的函数并处理返回值。可以使用“MLArray”类来处理从DLL返回的MATLAB数组。 下面是一个示例代码,演示如何在C#调用MATLAB封装DLL: ```csharp using System; using MathWorks.MATLAB.NET.Arrays; using MathWorks.MATLAB.NET.Utility; using MathWorks.MATLAB.NET.ComponentRuntime; namespace MyNamespace { class MyClass { static void Main(string[] args) { // Create MATLAB COM object Type matlabType = Type.GetTypeFromProgID("Matlab.Application"); dynamic matlab = Activator.CreateInstance(matlabType); // Load MATLAB-generated DLL AssemblyLoader loader = new AssemblyLoader(); loader.AddPath(@"C:\path\to\dll"); Assembly assembly = loader.Load("MyDLL"); // Call DLL function dynamic myFunction = assembly.CreateInstance("MyNamespace.MyClass"); MWArray result = myFunction.MyMethod(new MWNumericArray(1), new MWNumericArray(2)); // Process result double[] output = (double[])result.ToArray(typeof(double)); Console.WriteLine(output[0]); } } } ``` 这个例子假设你的DLL文件名为"MyDLL.dll",包含一个名为"MyClass"的类,其中有一个名为"MyMethod"的函数,接受两个数字参数并返回一个数字结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

专注VB编程开发20年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值