A MATLAB önálló programnyelv, így rendelkezik saját fordítóval is. A fordítót az mcc paranccsal hívhatjuk meg, melynek paramétere egy M kiterjesztésű fájl. Ebből fordítás után különálló alkalmazást, vagy fordítási egységet kapunk. A MATLAB a következő elemek generálására képes:
A MATLAB minden egységhez legenerálja a hozzá tartózó csomagoló(wrapper) fájlt is, amely tartalmazza a lefordított alkalmazás és a futtatandó állomány közötti interfészt. A wrapper függ a futtató környezettől. Hogy a szükséges interfészt biztosítsa, a csomagoló:
Nézzük a fordítás lépéseit egy egyszerű példaprogramon keresztül:
A létrehozott fájl minden olyan számítógépen futtatható amelyen olyan operációs rendszer van,
mint amilyen a fordító gépen volt. Ha tehát linuxon szeretnénk futtatni akkor, linux alatti MATLAB-ban kell fordítanunk.
A futtatáshoz szükséges még a MATLAB Component Runtime is. Az MRCInstaller.exe megtalálható a MATLABroot\toolbox\compiler\deploy\win32
Ugyanakkor a MATLAB-ban is legeneráltathatjuk a szükséges könyvtárakat egy tömöríttt fájlba. Ehhez a buildmcr(útvonal, fájlnév);
parancsot kell használnunk. Ezután a fordító által generált fájlokat(.m, .c, .ctf, .exe), másoljuk egy közös könyvtárba, és adjuk hozzá a dinamikus
könyvtárakhoz a
Ha a projectünk több M-fájlból áll, akkor ezeket csak fel kell sorolnunk az mcc parancs után. Például, ha van egy main.m és egy mrank.m fájlunk, akkor
azokat így fordítjuk: mcc -mc main mrank
A MATLAB-ban írt függvényeket C/C++ projectekben is meghívhatjuk. Ehhez az elkészült M fájlokhoz lib wrappert kell készíteni.
Például az előző hello.m programunkhoz mcc -W lib:helloLib hello parancsot kell kiadnunk. Ennek hatására a már említett fájlok mellet létrejön
egy hellolib.h is. Ezt kell includolni ha MATLAB-os függvényünket használni akarjuk. Például írjunk egy hello.c C programot:
#include#include #include "hellolib.h" main( int argc, char **argv ) { mclInitializeApplication(NULL,0); helloLibInitialize();/* Initialize the library of M-Functions */ mlfHello(); helloLibTerminate(); /* Terminate the library of M-functions */ mclTerminateApplication(); }