matlab打包dll
1、matlab示例程序:
function untitled4(x)
z = peaks(x);
figure
surf(z)
end
2、输入deploytool打包matlab程序,具体如下:
![](https://file.jishuzhan.net/article/1702617826306560002/3ddb1aa2590940ce8e9af509d552fe5f.png)
![](https://file.jishuzhan.net/article/1702617826306560002/2dff293646804395bd5c83fcac2e96fb.png)
3、拷贝
打包成功后,将生成for_redistribution_files_only文件夹中的dll文件拷贝到C#程序lib文件夹下,若没有,新创建一个。
![](https://file.jishuzhan.net/article/1702617826306560002/53fa7ce78079432f906c31d318c3a767.png)
![](https://file.jishuzhan.net/article/1702617826306560002/bcefce6bb5654882802fc649fb0b9e65.png)
错误解决:
![](https://file.jishuzhan.net/article/1702617826306560002/91b615f7a19c4b70a905ab42fabc94b7.png)
解决方法:将matlab程序改写成一个方法。
C#调用dll
1、添加引用
![](https://file.jishuzhan.net/article/1702617826306560002/16b2297ec8e44b92ae814c326af2d754.png)
MWArray.dll在matlab安装目录..\matlab\toolbox\dotnetbuilder\bin\win64\v4.0下,untitled4.ll与untitled4Native.dll在C#工程lib文件夹下。
2、导入包
using untitled4;
using MathWorks.MATLAB.NET.Arrays;
3、添加button点击事件
private void Button1_Click(object sender, EventArgs e)
{
untitled4.Class1 p3 = new untitled4.Class1();
p3.untitled4((MWArray)25);
}
完整示例代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using untitled4;
using MathWorks.MATLAB.NET.Arrays;
namespace test1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void Button1_Click(object sender, EventArgs e)
{
untitled4.Class1 p3 = new untitled4.Class1();
p3.untitled4((MWArray)25);
}
}
}
错误解决1:
![](https://file.jishuzhan.net/article/1702617826306560002/adf72468ab6041a08f6a162c13a01723.png)
解决方法:debug平台改为×64位
![](https://file.jishuzhan.net/article/1702617826306560002/fe95ec72d6cf418193e838977269df16.png)
错误解决2:
![](https://file.jishuzhan.net/article/1702617826306560002/a6b03ebb9d7b443582345cebee7318aa.png)
解决方法:matlab程序返回一个数,而C#代码接收的是MWArray数据。
p3.untitled4((MWArray)25);
![](https://file.jishuzhan.net/article/1702617826306560002/d19a280ea184442396bd4c087b5677be.png)
运行结果:
![](https://file.jishuzhan.net/article/1702617826306560002/a094ba3e9c434525b2e9a017be100282.png)