åºäºDLLå½¢å¼VCè°ç¨MATLABå½æ°æ¹æ³
å¦æå¨ä¸MATLABä¸æVCä¸å好äºå½æ°çè¯ï¼æ³å¨å¯¹æ¹çç¯å¢ä¸ä½¿ç¨ï¼ç´æ¥å°å¯¹æ¹è¯è¨çå½æ°ç¼è¯æDLLæ¯ä¸ä¸ªå¾æ¹ä¾¿çæ¹æ³ï¼ä¸éè¦éåäºãä»å¤©æåºäºDLLå½¢å¼VCè°ç¨MATLABå½æ°ç主è¦è¿ç¨åä¸ï¼å¨åç»å°åä¸ä¸MATLABè°ç¨VCå½æ°çæ¹æ³ã
1,MATLABä¸ç¼è¯DLL
å¨MATLABä¸å好å½æ°ï¼ä¿åå¨mtTestFun.mä¸ï¼ä½¿ç¨mcc -W cpplib:mtlibTestFun -T link:lib mtTestFun.mçæDLLï¼ç¨è¿ä¸ªå½ä»¤çæçæ¯C++å½¢å¼çï¼å³MATLABæ°æ®ç±»åå¯ä»¥ç¨ç±»ï¼å¦åç¨å
¶ä»çå½ä»¤çæçCå½¢å¼çï¼ä¸è½ç¨ç±»ã并çæäºç¸åºçå
¶ä»mtlibTestFun.hï¼mtlibTestFun.libåmtlibTestFun.dllå¨å
çä¸äºæ件
2,VCä¸å¼ç¨MATLABç¯å¢
éè¦å¼ç¨ç.hæ件路å¾ä¸ºMATLABå®è£
ç®å½çExtern\Includeï¼éè¦å¼ç¨ç.libæ件路å¾ä¸ºMATLABå®è£
ç®å½çExtern\Lib\Win32\Microsoftï¼å¼å
¥éå åºmclmcrrt.lib
3,VCä¸è°ç¨MATLABå½æ°
å°åæMATLABç¼è¯çæçæ件å
¨æ·å°å½åVCå·¥ç¨ä¸ï¼åªå°mtlibTestFun.hæ件å å
¥å°å½åå·¥ç¨ï¼å¹¶å¨éè¦è°ç¨çæ件ä¸å
å«ï¼å¼å
¥éå åºmtlibTestFun.libãå¨VCåå§åå½æ°éç¨ä¸é¢å½æ°è¿è¡åå§å
mclInitializeApplication(NULL,0);
mtlibTestFunInitialize();
å¨ç»ææ¶ç¨ä¸é¢å½æ°éæ¾
mtlibTestFunTerminate();
mclTerminateApplication();
ä¸é¢å¨éè¦çå°æ¹è°ç¨ï¼å设æ¯ä¸é¢çå½¢å¼
mtlibTestFun(int nargout, mwArray& y, const mwArray& I, const mwArray& th);
nargoutæ¯è¿ååæ°ä¸ªæ°ï¼è¿éæ¯1ï¼åé¢yåæ¼åéåæ¯ä¼ åºåæ°ï¼Iåthåæ¯ä¼ å
¥åæ°è¾å°å¼ååé«ã
C++æ°æ®ä¼ å
¥MATLABå½æ°æ¶éè¦å°å
¶è½¬åæmwArrayç±»å
double* pI = new double[row*column];
pl = ...
mwArray mwI(row, column, mxDOUBLE_CLASS);
mwI.SetData(pI, row*column);
è¿ååè¿éè¦å°mwArray转åC++ç±»åæ°æ®
double* pY = new double[Yrow*Ycolumn];
mwY.GetData(pY, Yrow*Ycolumn);
å½ç¶ï¼å¯¹äºä¸ç»´æ°ç»æ°æ®æ¥è¯´ï¼è¿æ ·è°ç¨æ¯æ²¡æé®é¢çï¼ä½æ¯å¯¹äºäºç»´ç©éµæ°æ®æ¥è¯´ï¼ä¸é¢çè°ç¨ä¼åçæ°æ®ä¼ å
¥åä¼ åºé误ãå 为C++ä¸MATLABæ°ç»åå¨é¡ºåºä¸ä¸æ ·ï¼MATLABæ¯åä¼å
ä¸C++ä¸çè¡ä¼å
ä¸åãè¿ä¸ªæ°æ®ç转æ¢ä¹å°å¨åç»ç»åºä¸äºè§£å³åæ³ã
温馨提示:答案为网友推荐,仅供参考