matlab混合程式設計 deploytool

2021-08-21 16:43:50 字數 2553 閱讀 3332

1.首先說我遇到的最大的問題,就是不能用matlab 自帶的編譯器 lcc-win32,用這個可以成功編譯出dll,但是我這裡呼叫老是崩潰。我的matlab版本是2010a的win32版本,後來選用的編譯器是 microsoft visual c++ 2008,可以成功編譯且正確呼叫。

2.設定編譯器的方法

mbuild -setup

然後選擇vs2008,然後後面都是選y,成功後會顯示done

3.遇到重定義的錯誤,如下

error    1    error c2371: 'char16_t' : redefinition; different basic types    d:\program files\microsoft visual studio 12.0\vc\include\yvals.h  

解決辦法如下定義就可以解決

#include

#if (_msc_ver >= 1600)

#define __stdc_utf_16__

#endif

#include "matrix.h"

#include "mex.h"

4.執行遇到的問題就是一定要安裝mcr的環境

安裝檔案在matlab 的安裝目錄下

我這裡的目錄是 

把這個mcrinstaller.exe安裝了,如果你要到其他 的電腦上去執行,就要在哪台電腦上安裝這個。

安裝完後,還要在系統的環境變數path那裡新增執行時環境的路徑,我這裡是

d:\program files (x86)\matlab\r2010a\runtime\win32

5.我只測試了個簡單的函式,就是求和,儲存檔名為add_three.m,**如下

function [ s ] = add_three( a,b,c )

s=a+b+c;

end6.編譯成dll

matlab命令 deploytool

設定name為add,選擇 c shared library

新增剛才的add_three.m檔案,並編譯

7.我是新建了個mfc的工程來測試,要設定matlab的包含目錄

我這裡的路徑是

庫我新增了

libmx.lib

libeng.lib

libmat.lib

libmex.lib

mclmcrrt.lib

8,以下是測試**

#include "add.h"

#pragma comment (lib , "add.lib" )

新增了剛才生成的dll的標頭檔案和lib

void ctestdlg::onbnclickedbutton1()

prhs[0] = mxcreatedoublematrix(1, 1, mxreal);

prhs[1] = mxcreatedoublematrix(1, 1, mxreal);

prhs[2] = mxcreatedoublematrix(1, 1, mxreal);

indata = mxgetpr(prhs[0]);

if (indata)

indata = mxgetpr(prhs[1]);

if (indata)

indata = mxgetpr(prhs[2]);

if (indata)

nlhs = 1;

state =mlxadd_three(nlhs, plhs, nrhs, prhs);

mxdestroyarray(prhs[0]);

mxdestroyarray(prhs[1]);

mxdestroyarray(prhs[2]);

d = (int)mxgetscalar(plhs[0]);

mxdestroyarray(plhs[0]);

addterminate();

}測試後結果正確.d=6

Matlab與VC混合程式設計

眾所周知,matlab是一套功能非常強大的商業數學軟體,從訊號處理,語音處理,資料採集,數值運算,影象處理,到電子 金融分析等等,幾乎在各個工業領域,他都已經得到了廣泛應用,同時也取得了巨大的成功。但是,由於matlab是用一種指令碼語言,他的解釋是逐行執行的,程式中所有的變數都是用mxarray來...

Matlab與VC混合程式設計

眾所周知,matlab是一套功能非常強大的商業數學軟體,從訊號處理,語音處理,資料採集,數值運算,影象處理,到電子 金融分析等等,幾乎在各個工業領域,他都已經得到了廣泛應用,同時也取得了巨大的成功。但是,由於matlab是用一種指令碼語言,他的解釋是逐行執行的,程式中所有的變數都是用mxarray來...

C C 和matlab混合程式設計

有些時候使用混合程式設計能夠讓程式更加高效 筆者所使用的matlab軟體為2018a,c 編譯器為microsoft visual c 2017 matlab本身是不帶c c 編譯器的,安裝編譯軟體是必須的 仍然是先從簡單的hello world 開始 首先編寫乙個c 程式 當然也可以c程式 inc...