在Matlab中運行mbuild -setup,選擇64位的編譯器。這個要配合vs2010的安裝進行,vs2010中需要有64的編譯器。
首先,寫壹個很簡單的加法函數:
function [c] =Add(a, b);
c = a + b;
保存為Add.m
然後進行編譯,命令如下:
mcc -W cpplib:libAdd -T link:lib Add
其中,mcc是matlab提供的編譯命令,此命令的幫助說明如下:
-W lib:string link:lib
-W是控制編譯之後的封裝格式,cpplib,是指編譯成C++的lib,cpplib後面是指編譯的庫的名字,-T表示目標,link:lib表示要連接到壹個庫文件的目標,目標的名字是後面的Add,即自定義m函數的名字。
運行完之後,妳的目錄下面,將會出現壹些文件:
libAdd.cpp
libAdd.lib
libAdd.dll
libAdd.h等
libAdd.dll是編譯好的動態庫,Add這個函數封裝在裏面,libAdd.h是對應的頭文件,在C裏面調用這個函數的時候,需要include這個頭文件,在這個頭文件的最後,妳可以看到下面的內容:
externLIB_libAdd_CPP_API void MW_CALL_CONV Add(int nargout, mwArray& c
, const mwArray&a
, constmwArray& b);
這就是Add的C函數的聲明。
nargout表示輸出變量的個數
a,b,c就是對應了m函數的幾個變量
註意,a,b,c三個變量的類型是mwArray,這是matlab提供的壹個特殊的變量類型(在7.0的版本,編譯之後,變量類型是mxArray)。