下面以一個(gè)簡單的小例子演示Matlab調(diào)用DLL的過程:
Matlab 為R2015b 64bit
Visual C++ 為Visual Studio 2012 64bit
- 編譯器準(zhǔn)備
在Matlab的命令窗口輸入:mex -setup
選擇你的編譯器蒜撮,我的是:
Visual Studio 2012 - 編寫你自己的DLL
在Visual Studio 2012中新建一個(gè)Win32的Dll工程喷鸽,不妨設(shè)名字為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); //*注意2個(gè)下劃線*抖甘,編譯器的宏定義
#ifdef __cplusplus
}
#endif
#endif
如果是64bit平臺租幕,需要把編譯平臺改為64bit
properties->general->configuration manager
加載DLL:
把編譯連接之后產(chǎn)生的MatlabDllTest.dll和MatlabDllTest.h文件拷貝到Matlab的當(dāng)前工作目錄下画株,輸入
loadlibrary('MatlabDllTest','MatlabDllTest.h');
(一定要有這步,如果dll不成功囤锉,會顯示錯(cuò)誤原因)查看DLL中導(dǎo)出的函數(shù)
libfunctions MatlabDllTest -full
-full選項(xiàng)會列出導(dǎo)出函數(shù)的詳細(xì)輸入和輸出參數(shù)屯耸,這是輸出信息如下:
Functions in library MatlabDllTest:
double add(double, double)
- 調(diào)用函數(shù)
calllib('MatlabDllTest', 'add', 1.3, 4.6)
此時(shí)就會輸出正確的結(jié)果
ans =
5.9000
總結(jié):這個(gè)例子比較簡單,只是為了演示整個(gè)過程送丰,如果你是真的用到了Matlab來調(diào)用外部DLL的這種方式的話缔俄,就要注意你的DLL工程要符合Matlab的要求啦,詳細(xì)信息請自己查看Matlab的幫助文件器躏,我就不羅嗦了俐载。