C#与 Matlab2014a 混合编程
为了实现 C#与 Matlab 混合编程,费了好大劲才实现生成的 DLL
文件能够正常调用,而不出现调用组件报错“初始值设定项引发异常”
的问题。网上有很多资源可供参考,可惜参差不齐,特把解决过程记
录,方便后面想学习的朋友。首先感谢网络上各位友人提供的解决方
法,希望该教程对各位新朋友有帮助。
By Masterjay at XMU
2015‐07‐09
1、调试成功平台
(1) 系统平台
WIN7 64 位
(2) 软件版本
VS2010 C# & Matlab 2014a 64 位
(注:matlab 2014b 版本有朋友说没办法生成 DLL 文件,请注意哦!另外,注意各
个版本的位数,这个是有差别的哦!)
2、Matlab 生成 C#可调用的 DLL 过程
(1)配置 Matlab 的编译器
1)在 MATLAB 的命令窗口中输入 mbuild –setup 会弹出:
(这是我之前已经配置好的原因哦!)
未配置时弹出:
在弹出的选择项中,使用默认的[y](直接回车就是选择默认值),让 Matlab 自动搜索可
用的编译器。如果只安装了 vs2010(如果未安装,请先安装),会弹出可选编译器为:
填 1,回车。
填 y,回车。
到这里,配置都成功了。
(2)建 MATLAB 的.NET 工程,生成 DLL 文件。
1)在控制命令窗口中输入:deploytool
2)选择 Library Compiler 进入工程界面
配置如下:
(注:Class1 改的名字不能与 Matlab 的函数名字一样,否则无法生成哦)
打开输出的路径:”Open output folder”就可以看到生成的文件。
其中 Multiply_m.dll 文件即为 C#可调用的文件。
Matlab 的程序如下,记得文件名要与程序名称一致哦。
(3)建立 VS2010 的 C#窗体应用程序
得到如下窗体,并添加相应控件
修改控件属性得到如下结果:
添加 DLL 应用文件:
引用文件:
1)生成的:Multiply_m.dll
2)MWArray.dll:Matlab 安装目录下\toolbox\dotnetbuilder\bin\win64\v2.0
添加 C#代码:
双击“计算”按钮,进入代码编写界面
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using Multiply_m;
namespace Multiply_Test
{
public partial class Form1 : Form
{
int A,B;
public Form1()
{
InitializeComponent();
A = 1;
B = 2;
}