zoukankan      html  css  js  c++  java
  • Mex文件在VS2010中调试方法

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

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

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

          1、VC中编写Mex函数

      新建一个win32 dll 空项目。

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

      3、配置项目属性。  

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

      连接器 -> 附加库目录 加入MATLAB的 externlibwin32(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工程里,就可以像函数调用一样任意使用啦。
  • 相关阅读:
    分享:一个支持并发, 支持异步/同步, 支持http/https, 支持续传的avhttp库
    EvaThumber : 基于URL的图片处理库 (可实现缩略图 | 二维码 | 水印 | 面部识别等)
    Stanford University Introduction to Computational Advertising
    saghul, on code « How do event loops work in Python?
    django orm 自己跟自己一对多关系? django问答求助 python官方论坛 Powered by Discuz!
    台北印象 阮一峰的网络日志
    Connector/ODBC 64 bit windows version
    The Django Book
    使用 libevent 和 libev 提高网络应用性能
    SNA Shared Nothing Architecture
  • 原文地址:https://www.cnblogs.com/hust-yingjie/p/5480658.html
Copyright © 2011-2022 走看看