zoukankan      html  css  js  c++  java
  • Mex混合编程专题二:MEX Hello Word

    VS2010中写mex入门级工程代码

     接着上一篇文章的工程继续,如下代码:


    #include "stdafx.h" #include "mextest.h" #include "mex.h" #include <stdio.h> void hello() { printf("Hello World "); } void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[]) { hello(); }

    将上面的代码都复制到mextest.cpp文件里面,把里面预生成的代码都覆盖掉。

    项目右键,生成。

    怎么样?出错了没?

    没出错,恭喜你!

    出错了?是不是“无法解析的外部符号错误呢?”,那就要记得去专题一里面看看2.a.2)了哦,看看是不是自己的工程和安装的matlab的lib文件不兼容,要保证工程了依赖的lib文件要么都是32位的要么都是64位的。

    改变生成文件后缀

    项目->右键->属性->常规,把目标文件扩展名由.dll改为.mexw64,当然,如果是32位程序就是.mexw32

    clip_image002


    VS2010中调试MEX

    如何将matlab与vs2010捆绑起来调试程序是之前最大的困惑。在网上找资源,发现http://www.cnblogs.com/avril/archive/2012/09/12/2681192.htmlhttp://www.cnblogs.com/lukylu/p/4042306.html说的都挺好的。在这来份图文版的。

    Step1. vs2010-Tools-附加到线程 Attach to process-选择matlab(快捷键Ctrl+Alt+P)。

    clip_image003

    Step2. 选择Matlab

    clip_image005

    Step3. VS进入调试状态。在上面写的mextest.cpp相应位置处下断点。

    Step4. 将matlab的current folder 设置成mex生成文件所在的路径。(这步非常重要,要不无法调试调用)

    Step5. 调用的函数名就是dll的主文件名。在这个例子里面就是mextest.mex64。这样就在matlab命令行里面输入mextest,回车进入VS断点!clip_image007

    继续运行,matlab里面Hello word出现没?

    clip_image008:D

    1. 任何单位或个人认为本博的内容可能涉嫌侵犯其合法权益,可以及时的联系我(olenet#126#com),我会立即更正或删除。

    2. 欢迎转载,记得贴链接^_^。www.cnblogs.com/OleNet

  • 相关阅读:
    P3015 [USACO11FEB]最好的括号Best Parenthesis
    P1944 最长括号匹配_NOI导刊2009提高(1)
    P2328 [SCOI2005]超级格雷码
    P2308 添加括号
    P5657 格雷码【民间数据】
    P2196 挖地雷
    P5020 货币系统
    括号序列模型--序列dp--U86873 小Y的精灵国机房之旅
    P1033 自由落体
    P1017 进制转换
  • 原文地址:https://www.cnblogs.com/OleNet/p/4347722.html
Copyright © 2011-2022 走看看