C 呼叫Matlab生成的dll方法的詳細說明

2021-06-22 00:43:46 字數 1174 閱讀 5508

需要的工具:vs2005及以上版本,matlab2008b及以上版本,另外非常重要的需要安裝乙個matlab compiler runtime,這個檔案(mcrinstall.exe)在安裝完matlab之後就會在安裝資料夾下存在,需要搜尋一下(因為不同版本的matlab可能存放位置不同),把它安裝一下就ok了。

接下來在matlab中寫乙個m檔案,當然是乙個函式啦。然後在matlab命令列下執行deploytool,在圖形介面裡選.net元件,然後進入乙個工程目錄的介面,新建工程,工程的名字就是.net元件的名字(例如sinfit),在其下面的目錄表示.net類名(例如sinfit),在類名上點右鍵"add file...",把matlab的.m函式檔案(例如sinfit.m)選進去。最後進行編譯(build the project),生成的目錄下有以工程名命名的dll檔案(例如sinfit.dll)。ok,dll生成好了。

接下來開啟vs,匯入兩個dll,乙個前面生成的那個dll,乙個是/dotnetbuilder/bin/win32/v2.0/mwarray.dll(如果找不到就搜一下)。然後在工程裡加入下面的引用:

using mathworks.matlab.net.arrays;

using mathworks.matlab.net.utility;

using sinfit;

ok,可以用了,用法是例項化乙個sinfit的物件,然後呼叫裡面的matlab函式,不過有乙個問題需要注意的是,matlab的輸入和輸出資料都是矩陣,很特殊,在.net中叫做mwarray,它還有乙個子類叫做mwnumericarray,它們的使用方法簡單說明如下:

建立乙個mwnumericarray物件的方法:mwnumericarray para = new mwnumericarray(mwarraycomplexity.real, 4, 2);這樣就建立了乙個矩陣,如果要把它對映給乙個double型的二維陣列,則需要建立陣列double[,] temp = new double[2, 4];這個地方就要注意了,正好反過來。然後如果是mwnumericarray賦給double[,]的話可以採用mwnumericarray的toarray方法,如double[,] paras = (double[,])para.toarray(mwarraycomponent.real);其中para是mwnumericarray物件。如果是double[,]賦給mwnumericarray的話,那就直接賦值就ok了。

C 呼叫matlab生成的dll

vs呼叫matlab生成的dll 一 程式設計環境 vs2012 ultimate matlab2012a 32位 二 matlab程式轉dll 1.matlab程式簡單例項 myadd.m function result myadd a,b result a b end2.轉dll步驟 命令列中輸...

matlab呼叫VS生成的DLL

vs配置管理器是debug版本,將程式生成動態鏈結庫,在matlab呼叫時,彈出assert failed對話方塊,不知道為何會彈出錯誤,一開始以為是記憶體洩露,使用visual leak detector工具對記憶體進行了洩露檢測,發現有記憶體洩露,以為是記憶體洩露造成的,將記憶體洩露進行修復,結...

C 生成dll呼叫

用visual c 生成的dll檔案已經和以前的dll檔案有了本質上的區別。用visual c 生成的dll檔案在程式設計中更多的表現為一種類 class 或者類庫 class library 製作乙個元件 1.首先建立乙個新類庫工程檔案 file new project visual c proj...