• Mex文件在VS2010中调试方法


    Mex文件在VS2010中调试方法

     

      matlab里面无法单步调试mex函数,故需转到VS上面调试,这里采用VS2010。

      参考网上很多人写的方法但都很乱,杂,试了多次都没有成功。今天终于解决了,现把方法记录下来。

          1、VC中编写Mex函数

      新建一个win32 dll 空项目。

      2、添加源文件Test.cpp,编写MEX函数,MEX函数编写方法这里不赘述了。

      3、配置项目属性。  

      打开项目属性配置页,C++ -> 附加包含目录 加入MATLAB安装目录下的 externinclude 路径。

      连接器 -> 附加库目录 加入MATLAB的 externlibwin32microsoft 路径。

      连接器 -> 输入 -> 附加依赖项 输入libmx.lib libeng.lib libmat.lib libmex.lib 这四个lib文件。

      在Linker-General-Output File:改成

                       .Debug(ProjectName).mexw32(64位系统相应改成64)

      Source Files- Add - New Item新建模块定义文件Test.def

      并为其添加内容

              LIBRARY ;"Test"
              EXPORTS mexFunction

      在Linker-Input-Module Definition File添加:Test.def

      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工程里,就可以像函数调用一样任意使用啦。
      [参考]
     
  • 相关阅读:
    ios 分享腾讯微博
    ios 分享微信
    elinput 价格校验 大于0保留2位小数,不包含01,01.1这种
    从范闲到许乐,从宁缺再到陈长生
    二进制流 ajax 实现图片上传
    php 操作redis 部分命令
    matlab 与vs2008联合编程的设置备忘
    新型机器人闯入职场:到底是工作缔造者还是工作终结者?
    c++ vs2008 多线程编程的样例
    虚拟试衣创业公司Fitiquette被印度电商Myntra收购
  • 原文地址:https://www.cnblogs.com/wjgaas/p/4994292.html
Copyright © 2020-2023  润新知