matlab與C混合編程調試-vs2010+matlab2012a

        matlab 對於科學計算來說非常方便易用,但是效率不太高,尤其是一些自己寫的未經優化的程序。可以將計算比較耗時的算法用C語言實現然後在matlab下調用,但關鍵是如何編寫和調試。編寫還好說,查看一下mex藉口函數的用法應該跟編寫普通函數差不多,只不過參數需要經過轉換,轉換時細心點,再加上有點C指針的基本功就能勝任。

       但是調試比較麻煩,之前一直以爲是一件十分困難的事情,但是嘗試之後才發現很簡單

    我們要做的有以下幾點

    1. 首先當然是編寫一個C函數了(借用一個網上的簡單例子)建立一個文件命名爲 add.c 將下面的內容複製進去,然後放入一個文件夾,然後將matlab當前路徑切換到

        add.c 所在的文件夾

  

// add.c
#include "mex.h" // 使用MEX文件必須包含的頭文件// 執行具體工作的C函數
double add(double x,double y)
{
    return x + y;
}// MEX文件接口函數
void mexFunction(
int nlhs,
mxArray *plhs[],
int nrhs,
const mxArray *prhs[]) {
double *a;
double b, c;
plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
a = mxGetPr(plhs[0]);
b = *(mxGetPr(prhs[0]));
c = *(mxGetPr(prhs[1]));
*a = add(b, c);
}

 


2.在matlab 命令窗口輸入 mex -g add.c -output add    -g 表示編譯時加入調試信息,結果會生成add.mexw32.pdb文件如圖所示,如果不加-g命令只會生成 add.mexw32文件

3.在打開vs2010 在頂端debug選項下選擇attach to process選項進入




找到matlab進程,選擇attach.然後自動關閉對話框,在vs中打開前面提到的add.c,然後再需要設置斷點的地方設置斷點如設置在下圖中的位置,斷點沒有變紅,沒關係,接着進行。


4.在matlab同目錄下寫一個test.m文件,內容如下


5.在matlab下點調試按鈕然後程序自動就跳到了剛纔add.c設斷點的地方且斷點變紅了.接下來就和調試C程序完全一樣了。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章