¨Ï¥ÎMATLAB½sĶ¾¹¡A§Ṳ́]¥i¥H²£¥Í¦@¨Éµ{¦¡®w¡]Shared Libraries¡^¡A¥]§t©Ò¦³¥Ñ¨Ï¥ÎªÌ©w¸qªº¨ç¦¡¡A¥H«KÅý¨ä¥L¿W¥ßÀ³¥Îµ{¦¡¨Ó©I¥s¡C
¨Ò¦p¡A°²³]§ÚÌn²£¥Í¤@Ó¦@¨Éµ{¦¡®w¡A¨ä¥\¯à¥]§t¯x°}¬Û¼©M¤Ï¯x°}ªºpºâ¡A¦¹®É§ÚÌ¥i¥ý©w¸q³o¨âÓ MATLAB ¨ç¦¡¡AmyMatInv.m¡]pºâ¤Ï¯x°}¡^¤Î myMatMultiply.m¡]pºâ¯x°}¬Û¼¡^¡G
±µµÛ§ÚÌn±N³o¨âÓ MATLAB ¨ç¦¡½sĶ¦¨¦@¨Éµ{¦¡®w¡Aµ{¦¡®w¦WºÙ¬° matLib¡A©Ò¨Ï¥Îªº«ü¥O¦p¤U¡G
mcc -B csharedlib:myMatLib myMatInv.m myMatMultiply.m -d sharedLibrary
¦¹®É·|¦b¿é¥X¥Ø¿ý sharedLibrary ²£¥Í¼ÆÓÀɮסA¥DÀɦW³£¬O myMatLib¡A³o¨ÇÀɮקY¬O myMatLib µ{¦¡®w¡A§ÚÌ¥i¥H¨Ï¥Î¤@¯ë¿W¥ßÀ³¥Îµ{¦¡¨Ó©I¥s³oÓµ{¦¡®w¤º©Ò©w¸qªº¨ç¦¡¡C¥Ñ©ó³oÓµ{¦¡®w¬O¥Ñ¨âÓ MATLAB ¨ç¦¡½sĶ©Ò±o¡A¦]¦¹§ÚÌ¥i¥H±o¨ì¨âÓ¹ïÀ³ªº C ¨ç¦¡¡A¤À§O¬O mlfMyMatInv ¤Î mlfMyMatMultiply¡A¹ïÀ³Ãö«Y¦p¤U¡G
- out=myMatInv(in)->mlfMyMatInv(1, &out, in);
- out=myMatMultiply(in1, in2)->mlfMyMatMultiply(1, &out, in1, in2);
¨Ï¥Î¦@¨Éµ{¦¡®w myMatLib.dll ¨Ó©I¥s³o¨âÓ C ¨ç¦¡ªº¿W¥ßÀ³¥Îµ{¦¡½d¨Ò¦p¤U¡G
Yn½sĶ¦¹¿W¥ßµ{¦¡¡A¥i¦b MATLAB ©R¥Oµøµ¡¿é¤J¦p¤U¡G
mbuild -IsharedLibrary myMatLibMain.c sharedLibrary/myMatLib.lib
¨ä¤¤ -IsharedLibrary t³d§iª¾ mbuild ¨ì sharedLibrary ¥h·j´M¼ÐÀYÀÉ myMatLib.h¡A¦Ó sharedLibrary/myMatLib.lib «h¬Ot³d¸ü©ú sharedLibrary/myMatLib.dll ªº¨Ï¥Î¤è¦¡¡C°õ¦æ§¹¤Wz«ü¥O«á¡A§Y¥i²£¥Í¿W¥ßÀ³¥Îµ{¦¡ myMatLibMain.exe¡A¦ý¦b¨Ï¥Î¦¹¥i°õ¦æÀɤ§«e¡A§ÚÌ¥²¶·Åý§@·~¨t²Îª¾¹D myMatLib.dll ªº¦ì¸m¡A§_«h myMatLabMain.exe µLªk¨Ï¥Î¦¹¦@¨Éµ{¦¡®w¡A¦³¨âºØ¤è¦¡¥i¥H¹F¨ì¦¹¥Øªº¡G
- ±N sharedLibrary/myMatLib.dll «þ¨©¨ì»P myMatLibMain.exe ¦P¤@¼h¥Ø¿ý¡]°²³]¬O¥Ø«e¥Ø¿ý¡^¡A¹ïÀ³ªº DOS «ü¥O¬O¡G
copy /y sharedLibrary/myMatLib.dll .
- ±N sharedLibrary ¥[¨ì DOS ªº·j´M¸ô®|¤§¤¤¡C
set path=%path%;sharedLibrary
§¹¦¨¤Wz³]©w«á¡A¥un¦b DOS ©R¥Oµøµ¡¤U¿é¤J¡umyMatLibMain¡v¡A§Y¥i¬Ý¨ì¦¹µ{¦¡½X°õ¦æªºµ²ªG¡C
Y§Ú̱N¤Wz¨BÆJ¾ã¦X¦b¤@Ó«ü¥OÀÉ¡A¥i¥H±o¨ì¤U¦C½d¨Ò¡G
¦³Ãö mcc ¤Î mbuild «ü¥Oªº¿ï¶µ«Ü¦h¡AŪªÌ¥i¥Ñ¡udoc mcc¡v¤Î¡udoc mbuild¡v±o¨ì§¹¾ãªº½u¤W¤ä´©¡A¦b¦¹¤£¦AÂØz¡C
MATLABµ{¦¡³]p¡G¶i¶¥½g