天天看點

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

1、C#調用matlab程式方法

步驟一:在MATLAB中建一個m檔案(test.m)

***注意,.m檔案名随意,function函數名随意***

該程式用于模拟生成雷克子波,并繪圖,代碼如下:

function  test()

f=250;

ts=0.4502/f;

T=ts;

number=100;

t=-number/2:1:number/2;

a=(1-2*(pi*f*t*T).^2).*exp(-(pi*f*t*T).^2);

plot(t,a);

步驟二:生成dll動态連結庫

在MATLAB R2014a中輸入deploytool指令,

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

選擇“Library Compiler”,打開動态連結庫編譯器

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

1、        在“applicationtype”中選擇要生成的連結庫類型。  選擇“.NET Assembly”

2、        在“exportedfunctions”中選擇,函數所在的.m檔案,即我們剛剛建立的test.m檔案。

3、        為該類名起一個見名知意的名字,如ricker,預設為class1.

4、        點選右上角對号.

5、        開始編譯

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

此時顯示成功。生成成功後會自動打開生成檔案所在路徑

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

打開“…..noly”檔案,如下,我們隻需要第一個dll檔案。建立.net程式時,引用該dll即可

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

步驟三:C#程式中調用MATLAB程式(dll)

1、建立一個  windows窗體應用程式

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

2、"引用"右擊,選擇浏覽,找到test.dll,添加。

"引用"右擊,選擇浏覽,找到MWArray.dll(matlab安裝路徑\toolbox\dotnetbuilder\bin\win32\v2.0\MWArray.dll),添加

3、在界面添加一個button按鈕,在這個按鈕的點選事件中調用dll中的函數。

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

private voidbutton1_Click(object sender, EventArgs e)

        {

//new一個test類

            test.Ricker st = new test.Ricker();

            st.test();//調用matlab中的定義的function

        }

步驟四:實作效果

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

點選button按鈕

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

2、使用deploytool指令打開compiler面闆

生成dll時,會出現如下圖所示錯誤

C#調用matlab動态連結庫1、C#調用matlab程式方法2、使用deploytool指令打開compiler面闆

原因是matlab未完全破解,2014a的破解辦法:

http://pan.baidu.com/s/1qWFbOjq,提取碼84rg ,下載下傳後解壓,把“..\Matlab64\bin\win64”目錄下的compiler.dll,mcc.exe,libmwservices.dll 三個檔案複制到matlab安裝目錄對應位置替換原檔案即可!(如果軟體是32位,則對應目錄為“..\Matlab32\bin\win32”)

3、常見問題

MathWorks.MATLAB.NET.Arrays.MWNumericArray"的類型初始值設定項引發異常

我在自己的電腦上(x86)上運作沒有問題,我程式放到一台(x64)電腦上運作出錯,如上。解決辦法将項目平台改為(x64即可)。當然64位系統上也安裝了matlab。

一般而言出現上述異常,都是平台不相容導緻的。

轉自:https://blog.csdn.net/fxm720505/article/details/51382547