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檔案最好都放在一個資料夾下。