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安装目录下的 \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工程里,就可以像函数调用一样任意使用啦。

vs调试MEX文件的更多相关文章

  1. 如何在VC++ 中调试MEX文件

    MEX文件对应的是将C/C++文件语言的编写之后 得到的相关文件加载到Matlab中运行的一种方式, 现对于Matlab 中的某些程序运行效率而言, C/C++ 代码某些算法的领域上面执行效率很高,若 ...

  2. 转 Visual C++6.0 与matlab联合编程(2)----Visual C++6.0 环境下编译和调试MEX文件

    我的最初想法是利用matlab的mex命令调用C++程序生成动态链接库的,但是测试程序(文中另附)通过了,自己的实际应用程序却没有过.还是把方法贴在这儿,以便自己以后进行整理. http://shij ...

  3. Qt Creator下应用CMake项目调试mex文件

    网上可以找到很多应用Visual Studio编写.编译mex文件,并与MATLAB联合调试的文章.但这只限于Win平台,网上许多源码都是.mexa64的文件,它们的作者是怎么调试的呢?这里我介绍一下 ...

  4. Mex文件在VS2010中调试方法

    http://www.cnblogs.com/lukylu/p/4042306.html matlab里面无法单步调试mex函数,故需转到VS上面调试,这里采用VS2010. 参考网上很多人写的方法但 ...

  5. MEX文件编写和调试

    作者kaien,2010/02/16 以前我写过一篇文章,详细的介绍过MEX的格式,语法,编译,调试等.可惜记不清放在哪里了.而最近又用到MEX编程,所以只能重新温习一番.时间有限,只记下简要流程和注 ...

  6. 在Visual Studio中开发Matlab mex文件,生成mexw64/mexw32

    csunking贡献,2015-9-22 1712 1.   概述 通过使用C/C++与Matlab混合编程,既可以享受到C代码快速执行的速度,又可以方便的使用Matlab众多的库函数和强大的绘图功能 ...

  7. C#报错:创建调试信息文件 ……obj\Debug\model.pdb: 拒绝访问

    错误:创建调试信息文件“.......\obj\Debug\model.pdb”时发生错误 --“......\obj\Debug\model.pdb: 拒绝访问. 解决办法如下: 删除该项目下的 b ...

  8. MATLAB mex文件

    MATLAB的mex文件是一种特征的函数封装形式,这类函数一般由C/C++语言编写的,经过MATLAB编译器处理而生成的二进制文件.它是可以被MATLAB解释器自动装载并执行的动态链接程序,类似于wi ...

  9. 如何设置、查看以及调试core文件

    http://blog.csdn.net/xiaoxiaoniaoer1/article/details/7740820 1.core文件的生成开关和大小限制--------------------- ...

随机推荐

  1. XmlDocument加载有Xmlns的xml文档,使用Xpath

    using System; using System.IO; using System.Xml; public class Sample { public static void Main() { X ...

  2. Please ensure that adb is correctly located at '...adb.exe' and can be executed.

    Android Launch! The connection to adb is down, and a severe error has occured. You must restart adb ...

  3. SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释

    一.SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释:根据datatable名填充Dataset.myda.Fill(ds, ...

  4. C# DateTime.Now 用法小记

    1.DateTime.Now   获取时间跟系统当前时间一直并且格式一直,如系统时间带有星期几,获取的时间也会带有 2,以下为拷贝前人总结的: //2008年4月24日 System.DateTime ...

  5. Problem D Ananagrams(map的使用)

    题目链接:Problem D 题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另一个单词.在判断是否满足条件时,字母不区分大小写. 但是输出时应保留原始大小写, ...

  6. ThinkPHP第十五天(setField、setInc、setDec、关联模型)

    1.ThinkPHP中的比较特殊连贯操作 如果要更新某个字段可以用setField方法,比如M('user')->where('id=1')->setField('username','T ...

  7. 二、Python-----用户交互

    1.用户交互 Python 3.0的写法 name = input("Please input your name:") Python 2.0的写法 name = raw_inpu ...

  8. [LeetCode]题解(python):105-Construct Binary Tree from Preorder and Inorder Traversal

    题目来源: https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 题意分析: ...

  9. 生产企业如何部署VMware虚拟化的解决方案

    相信生产企业能够清楚的看到,随着生产规模和业务的快速发展,在IT基础设施的投入和使用也不断的增加,但同时也发现没有进行有效整理的硬件效率也就越来 越低,很大程度上浪费了IT资源.所以如何降低成本.提高 ...

  10. 针对PCB飞针测试快速有效的技巧

    测试探针通过多路传输(multiplexing)系统连接到驱动器(信号发生器.电源供应等)和传感器(数字万用表.频率计数器等)来测试UUT上的元件.当一个元件正在测试的时候,UUT上的其它元件通过探针 ...