vs除錯MEX檔案

2022-08-16 23:15:17 字數 1497 閱讀 9840

matlab裡面無法單步除錯mex函式,故需轉到vs上面除錯,這裡採用vs2010。

參考網上很多人寫的方法但都很亂,雜,試了多次都沒有成功。今天終於解決了,現把方法記錄下來。

1、vc中編寫mex函式

新建乙個win32 dll 空專案。

2、新增原始檔test.cpp,編寫mex函式,mex函式編寫方法這裡不贅述了。

3、配置專案屬性。  

開啟專案屬性配置頁,c++ -> 附加包含目錄 加入matlab安裝目錄下的 \extern\include 路徑。

聯結器 -> 附加庫目錄 加入matlab的 \extern\lib\win32

(win64

)\microsoft 路徑。

聯結器 -> 輸入 -> 附加依賴項 輸入libmx.lib libeng.lib libmat.lib libmex.lib 這四個lib檔案。

在linker-general-output file:改成

.\debug\(projectname).mexw32

(mexw64

)(64位系統相應改成64)

source files- add - new item新建模組定義檔案test.def

並為其新增內容

library ;"test"

exports mexfunction

在linker-input-module definition file新增:test.def

matlab是 64位的話,vs編譯器必須為64位,需要手工調整!

4、f7生成解決方案,如果以上都正確,便會在工程debug目錄下生成乙個(projectname).mexw32檔案。

5、在vs中單步除錯mex函式。

將matlab的current folder 設定成mexw32檔案所在的路徑,即debug目錄。(這步非常重要,要不無法除錯呼叫)

vs2010-tools-附加到執行緒 attach to process-選擇matlab。

在源**test.cpp裡設定斷點。

在matlab工程裡輸入**或者函式(即mexw32檔案的檔名,這裡為projectname),即會跳轉到vs的斷點處。

然後按f10便可單步執行。

6、每次修改mexfunction所在的.cpp檔案後,重新編譯生成解決方案前都需要先在matlab工程下clear一下,即

clear (projectname).mexw32

注意:這步非常重要,因為matlab在呼叫該mex函式後還一直占用,未釋放,必須要clear下,vs中才可重新編譯生成解決方案。

好的,按照以上方法就可以任意編寫可除錯的mex函式啦。

除錯成功後把(projectname).mexw32檔案copy到任意matlab工程裡,就可以像函式呼叫一樣任意使用啦。

來自為知筆記(wiz)

在VS2013中除錯mex檔案

1.有了包含mexfunction的cpp或c還不夠,還需要建立乙個工程,這裡是新建乙個dll vs 新建 win32專案 dll。2.由於是64位機,所以需要把project設定成x64 debug,檢視 屬性管理器 雙擊project 配置管理器 平台 選擇x64 3.由於mex functio...

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函式編寫方...