在VS2013中除錯mex檔案

2021-07-07 09:12:29 字數 736 閱讀 3977

1. 有了包含mexfunction的cpp或c還不夠,還需要建立乙個工程,這裡是新建乙個dll:vs->新建->win32專案->dll。

2. 由於是64位機,所以需要把project設定成x64 debug,檢視->屬性管理器->雙擊project->配置管理器->平台->選擇x64

3. 由於mex function需要一些mex的標頭檔案,比如mex.h,因此需要在專案中設定包含目錄:

檢視->屬性管理器->雙擊「debug->win64」->配置屬性->vc++目錄->包含目錄->敲入c:\program files\matlab\r2014b\extern\include(本文例)

注:這個比右鍵專案->屬性一勞永逸,否則每個不同的專案都要重新設定一遍。

5. 在vs中,ctrl+alt+p,選擇matlab作為附加程序(此時會載入一些列符號),設定斷點。回到matlab進行呼叫,就可以進入斷點除錯了。

有的時候進入斷點後雖然可以單步執行,但mexfunction無法return(可能顯示未載入libmex.pdb之類的),我的解決方法是在return之前加入return yp_out,yp_out是乙個mex function的輸出引數:

#define	yp_out	plhs[0]
如此,便可以向matlab中返回mex檔案的輸出引數了。

同時,你可以看到,上述辦法並沒不需要在vs2013中編譯這個dll,實際上編譯和連線都在matlab中通過mex -g完成了。

vs除錯MEX檔案

matlab裡面無法單步除錯mex函式,故需轉到vs上面除錯,這裡採用vs2010。參考網上很多人寫的方法但都很亂,雜,試了多次都沒有成功。今天終於解決了,現把方法記錄下來。1 vc中編寫mex函式 新建乙個win32 dll 空專案。2 新增原始檔test.cpp,編寫mex函式,mex函式編寫方...

Mex檔案在VS2010中除錯方法

matlab裡面無法單步除錯mex函式,故需轉到vs上面除錯,這裡採用vs2010。參考網上很多人寫的方法但都很亂,雜,試了多次都沒有成功。今天終於解決了,現把方法記錄下來。1 vc中編寫mex函式 新建乙個win32 dll 空專案。2 新增原始檔test.cpp,編寫mex函式,mex函式編寫方...

Mex檔案在VS2010中除錯方法

matlab裡面無法單步除錯mex函式,故需轉到vs上面除錯,這裡採用vs2010。參考網上很多人寫的方法但都很亂,雜,試了多次都沒有成功。今天終於解決了,現把方法記錄下來。1 vc中編寫mex函式 新建乙個win32 dll 空專案。2 新增原始檔test.cpp,編寫mex函式,mex函式編寫方...