c 程式裡如何呼叫MATLAB中的函式

2021-06-02 00:57:23 字數 1293 閱讀 3539

上面提到的matlab「動態庫」是指matlab6.5的動態庫,6.5以上不支援這樣直接呼叫程式了,所以沒有提供類似的動態庫。安裝matlab6.5後,在安裝路徑下的extern資料夾下就是我們要的所有東西了。

其中:...extern\include,裡的檔案就是我們需要包含檔案,將...\extern\include和...\extern\include\cpp新增到vs裡的工具

\選項\專案和解決方案\包含檔案中;

...extern\lib,裡的檔案就是我們在編譯時要用到的庫檔案,將...\extern\lib\win32和...\extern\lib\win32\microsoft\msvc60新增到vs裡的工具

\選項\專案和解決方案\庫檔案中;

...extern\lib\win32\dll\bin\win32裡的檔案就是動態庫檔案,發布程式時,我們將這些檔案拷貝到和我們程式.exe檔案同級的目錄下,一起發布,這樣目標機上不用安裝matlab也可以執行了。

下面舉個在c++中如何呼叫matlab函式的例子:

int curvesmooth(double *x1,double* y1,const int count1,double *x2,double *y2,const int count2)

{//啟用matlab自動記憶體管理

mlfenternewcontext(0, 0);

mxarray *x = null;                    //中心波長係數中間一列的矩陣

mxarray *y = null;                     //中心波長係數中間一列的矩陣

mxarray *xi = null;                      //輸入的像元向量矩陣

mxarray *yi = null;                    //輸出的像元向量矩陣

//封裝為matlab矩陣    

mlfassign(&x, mlfdoublematrix(1,count1,x1, null));

mlfassign(&y, mlfdoublematrix(1,count1,y1, null));

mlfassign(&xi, mlfdoublematrix(1,count2,x2, null));    

//開始進行樣條插值

mlfassign(&yi,mlfspline(x,y,xi));

//獲取矩陣資料指標

double *vo=mxgetpr(yi);

//填充輸出陣列

for (int i=0;i

以上為計算曲線樣條插值的函式。

如何在C 中呼叫C程式

c 和c是兩種完全不同的編譯鏈結處理方式,如果直接在c 裡面呼叫c函式,會找不到函式體,報鏈結錯誤。要解決這個問題,就要在 c 檔案裡面顯示宣告一下哪些函式是c寫的,要用c的方式來處理。1.引用標頭檔案前需要加上 extern c 如果引用多個,那麼就如下所示 extern c 然後在呼叫這些函式之...

如何在C 中呼叫C程式?

c 和c是兩種完全不同的編譯鏈結處理方式,如果直接在c 裡面呼叫c函式,會找不到函式體,報鏈結錯誤。要解決這個問題,就要在 c 檔案裡面顯示宣告一下哪些函式是c寫的,要用c的方式來處理。1.引用標頭檔案前需要加上 extern c 如果引用多個,那麼就如下所示 extern c 然後在呼叫這些函式之...

如何在C 中呼叫C程式?

c 和c是兩種完全不同的編譯鏈結處理方式,如果直接在c 裡面呼叫c函式,會找不到函式體,報鏈結錯誤。要解決這個問題,就要在 c 檔案裡面顯示宣告一下哪些函式是c寫的,要用c的方式來處理。1.引用標頭檔案前需要加上 extern c 如果引用多個,那麼就如下所示 extern c 然後在呼叫這些函式之...