1. 程式人生 > >vs2008中呼叫matlab3013a程式配置方法

vs2008中呼叫matlab3013a程式配置方法

1.在vs2008中建立一個win32控制檯應用程式,;

2.在vs2008中的 “工具”——>“選項”——>"專案與解決方案"——>"VC++目錄"——>右上角選擇"包含檔案",在下面

  包含:D:\Program Files\MATLAB\R2013a\extern\include

3.再選擇“庫檔案”,在下面包含:D:\Program Files\MATLAB\R2013a\extern\lib\win32\microsoft ,然後按確定

4.選擇左邊新建的專案名,右擊專案名,選擇“屬性”——>"配置屬性"——>“連結器”——>"輸入"——>"附加依賴項"中新增:

libmx.lib libmat.lib libeng.lib 各檔案之間以空格隔開。

在網上找了個程式測試了一下:

#include <iostream>
#include <math.h>
#include "engine.h"


#pragma comment(lib, "libmx.lib")
#pragma comment(lib, "libmat.lib")
#pragma comment(lib, "libeng.lib")


using namespace std;
using namespace std;


int main()
{
    const int N = 50;
    double x[N],y[N];
    int j = 1;
    for (int i=0; i<N; i++) //計算陣列x和y
    {
        x[i] = (i+1);
        y[i] = sin(x[i]) + j * log(x[i]); //產生-之間的隨機數賦給xx[i];
        j*= -1;
    }
    Engine *ep; //定義Matlab引擎指標。
    if (!(ep=engOpen(NULL))) //測試是否啟動Matlab引擎成功。
    {
        cout <<"Can't start Matlab engine!" <<endl;
        exit(1);
    }


    //定義mxArray,為行,N列的實數陣列。
    mxArray *xx = mxCreateDoubleMatrix(1,N, mxREAL);


         mxArray *yy = mxCreateDoubleMatrix(1,N, mxREAL); //同上。


    memcpy(mxGetPr(xx), x, N*sizeof(double)); //將陣列x複製到mxarray陣列xx中。
    memcpy(mxGetPr(yy), y, N*sizeof(double)); //將陣列x複製到mxarray陣列yy中。


    engPutVariable(ep, "xx",xx); //將mxArray陣列xx寫入到Matlab工作空間,命名為xx。
    engPutVariable(ep, "yy",yy); //將mxArray陣列yy寫入到Matlab工作空間,命名為yy。


    //向Matlab引擎傳送畫圖命令。plot為Matlab的畫圖函式,參見Matlab相關文件。
    engEvalString(ep, "plot(xx, yy); ");


    mxDestroyArray(xx); //銷燬mxArray陣列xx和yy。
    mxDestroyArray(yy);


    cout <<"Press any key to exit!" <<endl;
    cin.get();
    engClose(ep); //關閉Matlab引擎。


*******在做完以上工作後,編譯可以通過,但是要執行的話,還會報“計算機中丟失libmx.dll。”的錯誤。*******

       原因:matlab2010a版本的環境變量出現了問題。libmx.dll是存在於D:/Program Files/MATLAB/R2010a/bin/win32資料夾中,而在Win7系統變數裡Matlab在安裝的時候時只寫入了路徑D:/Program Files/MATLAB/R2010a/bin,故系統不會自動到其子檔案中找dll,從而報錯說找不到檔案。

       解決辦法:由於舊版本的Matlab中沒有將這些dll分離放到win32子資料夾中。所以只要在系統變數中包含路徑D:/Program Files/MATLAB/R2010a/bin/win32即可。

5.配置環境變數:右擊桌面“計算機”——>"屬性"——>"高階系統設定"——>“環境變數”——>系統變數中“path”中新增:D:\Program Files\MATLAB\R2013a\bin\win32。

進測試,成功呼叫了matlab