在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);
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的幫助檔案。
在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的幫助檔案。