上面提到的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 然後在呼叫這些函式之...