vs調試MEX文件

http://www.cnblogs.com/lukylu/p/4042306.html

matlab裏面沒法單步調試mex函數,故需轉到VS上面調試,這裏採用VS2010。html

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

      一、VC中編寫Mex函數spa

  新建一個win32 dll 空項目。線程

  二、添加源文件Test.cpp,編寫MEX函數,MEX函數編寫方法這裏不贅述了。調試

  三、配置項目屬性。  htm

  打開項目屬性配置頁,C++ -> 附加包含目錄 加入MATLAB安裝目錄下的 \extern\include 路徑。blog

  鏈接器 -> 附加庫目錄 加入MATLAB的 \extern\lib\win32(win64)\microsoft 路徑。get

  鏈接器 -> 輸入 -> 附加依賴項 輸入libmx.lib libeng.lib libmat.lib libmex.lib 這四個lib文件。編譯器

  在Linker-General-Output File:改爲it

                   .\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位,須要手工調整!

  四、F7生成解決方案,若是以上都正確,便會在工程Debug目錄下生成一個(ProjectName).mexw32文件。

  五、在VS中單步調試MEX函數。

    將matlab的current folder 設置成mexw32文件所在的路徑,即Debug目錄。(這步很是重要,要不沒法調試調用)

    vs2010-Tools-附加到線程 Attach to process-選擇matlab。

    在源代碼 Test.cpp裏設置斷點。
    在matlab工程裏輸入代碼或者函數(即mexw32文件的文件名,這裏爲ProjectName),即會跳轉到vs的斷點處。
    而後按F10即可單步執行。
  六、每次修改MexFunction所在的.cpp文件後,從新編譯生成解決方案前都須要先在matlab工程下clear一下,即
                      clear (ProjectName).mexw32
    注意:這步很是重要,由於matlab在調用該mex函數後還一直佔用,未釋放,必需要clear下,vs中才可從新編譯生成解決方案。
  
  好的,按照以上方法就能夠任意編寫可調試的mex函數啦。
  調試成功後把(ProjectName).mexw32文件copy到任意matlab工程裏,就能夠像函數調用同樣任意使用啦。


相關文章
相關標籤/搜索