回覆列表
  • 1 # 使用者2458114238191884

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

  • 中秋節和大豐收的關聯?
  • 春節見家長,女朋友爸爸掏出500萬讓自己離開她怎麼辦?