VS 2008 C#MATLAB 2009 b生成DLLを呼び出す

6977 ワード

http://www.cnblogs.com/horizon_king/archive/2011/01/21/1941220.html
 
開発環境:VS 2005+Matlab 2009 a
1、簡単なものを作成する.mファイル
Matlab 2009 aを開き、新規作成する.mファイル、次のコードを入力します.
function result=twice(inputvar);result=2*inputvar;
コードをtwiceとして保存します.mファイル、図に示すように.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第1张图片
2.Matlab DeployToolを用いる生成する.Netコンポーネント
Matlab 2009 aのCommand Windowにdeploytoolを入力し、図に示すように車に戻ります.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第2张图片
図に示すようにMatlabのDeployToolを開くことができます.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第3张图片
DeployToolフォームで、「新規」ボタンをクリックして、図のように「新規プロジェクト」ダイアログ・ボックスを開きます.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第4张图片
左のリストからMATLAB Builder NEを選択し、右のリストから選択する.NET Component、このプロジェクトをtwiceと名付けました.prj、OKをクリックすると、図に示すようにプロジェクト設定画面に入ります.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第5张图片
Twiceフォルダに先ほど作成したものを追加します.mファイル、図に示すように.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第6张图片
コンパイルボタンをクリックするか、ショートカットキーCtrl+Bを使用してプロジェクトをコンパイルします.コンパイル完了後のメインウィンドウを図に示します.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第7张图片
3、図に示すようにテスト用のWindowsアプリケーションを作成し、MatlabTestと命名する.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第8张图片
4、対MWArrayを追加する.dllの参照
MWArray.dllは一般的に[Matlabインストール場所]R 2009 atoolboxdotnetbuilderbinwin 32v 2に位置する.0フォルダで、Matlab 2009 a対応のMWArrayに気づきました.dllは2.9.バージョン0.0.Matlabバージョンのアップグレードをしていて頭が痛いのがこのdllです.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第9张图片
バージョンアップグレードは、以前に生成されたdllを再生成する必要があることを意味します.バージョンアップの問題については、後述のブログで詳しく説明します.
MWArrayを追加した理由dllは、このようなハイブリッドプログラミング方式の下で、私たちはよく
using MathWorks.MATLAB.NET.Arrays;using MathWorks.MATLAB.NET.Utility;
5.Matlabに対して生成するtwiceを追加する.dllの参照.
6、フォーム内の対応するコンポーネントを追加します.
Labelコントロールを追加し、Textプロパティを「計算結果」に変更します.
計算結果を表示するLabelコントロールを追加します.
計算方法を実行するButtonコントロールを追加します.
設計されたForm 1フォームを図に示します.
VS2008 C# 调用MATLAB 2009b 生成的DLL_第10张图片
7、相応のバックグラウンドコードを作成する.
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using MathWorks.MATLAB.NET.Arrays;
using twice;
 
namespace MatlabTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            int i = 5;
            Twice c = new Twice();
            MWArray result = c.twice((MWArray)i);
            this.label2.Text = result.ToString();
        }
    }
}

8、結果の実行と表示
VS2008 C# 调用MATLAB 2009b 生成的DLL_第11张图片
コードに変数iを入力して5を割り当てると、Matlab計算が呼び出され、計算結果10が順調に返されることがわかります.