1. 程式人生 > >MATLAB和c++混編 除錯相關內容

MATLAB和c++混編 除錯相關內容

https://wenku.baidu.com/view/6fd2cf55cfc789eb162dc857.html?qq-pf-to=pcqq.c2c   原網址

在Matlab 中除錯用C/C++編寫的MEX 檔案(32、64位機,VS2005和matlab R2010b) mex檔案是matlab提供的與外部語言如C、C++提供的介面函式。可以在Matlab環境下編寫一個*.m檔案,來編譯所定的C/C++檔案,當然,這個C/C++檔案的開頭是有要求的。Mex函式有固定的自己的一套介面形式 以VS2005和matlab R2010b 7.11.0版本為例,C/C++檔案在matlab編譯格式為*.mexw32,準備好你的C/C++檔案後:

  [1]、matlab安裝mex編譯工俱 命令如: mex –setup 編譯工具選擇:VS2005;一路yes下來。最後,只要不報錯就可以。 

  [2]、在matab環境中,編寫編譯檔案compile_mex.m 把C/C++檔案編譯成*.mexw32檔案時,要使用mex –g命令,產生具有除錯資訊的執行檔案。而不是mex –o命令,後者             是不含除錯資訊的。

       compile_mex.m檔案內容如下; 

       function compile_mex(debug_flag)      (看原文)

       在命令列執行: debug_flag =’1’, compile_mex(debug_flag)

       mex  –g  filename .c  生成了:filename .mexw32和filename.mexw32.pdb; 如果不需要產生除錯資訊: 在命令列做無引數執行: compile_mex 生成了:filename .mexw32,但沒有生成filename.mexw32.pdb; 

     [3]、確定matlab開啟。 

     [4]、VS2005設定: 開啟VS2005,而後開啟*.mexw32所對應的C/C++檔案,不用建立新的工程。

             找到“除錯”或“工具”下拉項:attach to processor(附加到處理器)選擇matlab.exe程序,確定即可。此時可以看到VS2005是處於執行狀態的。

             在C/C++檔案中,就你所關心的程式處設定斷點。 

     [5]、開啟matlab下要執行的程式,先在matlab呼叫*.mexw32檔案的那個地方設個觀察斷點。執行matlab程式。 

     [6]、matlab先停在你的matlab呼叫處,再繼續執行程式。自動跟到VS2005中設定的斷點。(自動從matlab跟入VS2005),可以使用單步,逐步,跳出等除錯手段,還可以               把 變數新增到觀察視窗,和VS2005下的操作雷同。但不具備所有功能。

     [7]、按F5 執行完c++程式的剩餘部分,並從VS回到MATLAB介面。

     [註釋]、*.mexw32檔案,*.mexw32.pdb檔案和C/C++原始檔,*.m檔案最好都放在一個資料夾下。