å¨MatlabçHelpä¸æç´¢"Calling Functions in Shared Libraries"å³å¯çå°å
³äºæ¤å
容ç帮å©ææ¡£ã
ä¸é¢ä»¥ä¸ä¸ªç®åçå°ä¾åæ¼ç¤ºMatlabè°ç¨DLLçè¿ç¨ï¼
1ãç¼è¯å¨åå¤
å¨Matlabçå½ä»¤çªå£è¾å
¥:mex -setup
éæ©ä½ çç¼è¯å¨ï¼æçæ¯:
[2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.0
2ãç¼åä½ èªå·±çDLL
å¨Visual Studio 2008ä¸æ°å»ºä¸ä¸ªWin32çDllå·¥ç¨ï¼ä¸å¦¨è®¾åå为MatlabDllTest
ç¼è¾MatlabDllTest.cpp:
#include "MatlabDllTest.h"
double add(double x, double y)
{
return (x+y);
}
ç¼è¾MatlabDllTest.h:
#ifndef MATLABDLLTEST_H
#define MATLABDLLTEST_H
#ifdef __cplusplus
extern "C"
{
#endif
__declspec(dllexport) double add(double x, double y);
#ifdef __cplusplus
}
#endif
#endif
3ãå è½½DLLï¼æç¼è¯è¿æ¥ä¹å产ççMatlabDllTest.dllåMatlabDllTest.hæ件æ·è´å°Matlabçå½åå·¥ä½ç®å½ä¸ï¼è¾å
¥
loadlibrary('MatlabDllTest','MatlabDllTest.h');
ï¼ä¸å®è¦æè¿æ¥ï¼å¦ædllä¸æåï¼ä¼æ¾ç¤ºé误åå ï¼
4ãæ¥çDLLä¸å¯¼åºçå½æ°
libfunctions MatlabDllTest -full
-fullé项ä¼ååºå¯¼åºå½æ°ç详ç»è¾å
¥åè¾åºåæ°ï¼è¿æ¯è¾åºä¿¡æ¯å¦ä¸ï¼
Functions in library MatlabDllTest:
double add(double, double)
5ãè°ç¨å½æ°
calllib('MatlabDllTest', 'add', 1.3, 4.6)
æ¤æ¶å°±ä¼è¾åºæ£ç¡®çç»æ
ans =
5.9000
æ»ç»ï¼è¿ä¸ªä¾åæ¯è¾ç®åï¼åªæ¯ä¸ºäºæ¼ç¤ºæ´ä¸ªè¿ç¨ï¼å¦æççç¨å°äºMatlabæ¥è°ç¨å¤é¨DLLçè¿ç§æ¹å¼çè¯ï¼å°±è¦æ³¨æDLLå·¥ç¨è¦ç¬¦åMatlabçè¦æ±ï¼è¯¦ç»ä¿¡æ¯è¯·èªå·±æ¥çMatlabç帮å©æ件ã
温馨提示:答案为网友推荐,仅供参考