vc++6.0调试mex文件

    看标题别以为我是抄书,如<精通Matlab与c/c++混合编程设计 第二版>一书,毕竟网上已经一堆了,我实在不好意思做网页的搬运工,当然解决过程还是有的,在文章尾部。

    环境是matlab7和vc++6,老土是老土点了,能用就行。上文提到的书本作者,你出来,我保证不打你:P134结尾部分,提到"在Output file name 文本框中更改输出文件的扩展名,如果是32位系统则改为mexw32..."。我诚实的跟着你做失败了。如果搜索到本文的读者按此书依样画葫芦失败了,不妨换个思路,不要盲目的在网上找帖子,因为其他的环境未必适合你,而且我也不能拍胸脯保证我的能过。

    首先,不得不承认,matlab有强大的文档,也不得不承认我们很懒,懒到不相信文档。当然可以说不会找。我展示下我怎么搜索到这个环境的搭建的。

    没猜错,大家都是从编写简单的mexFunction开始的,这之前,会运行mex -setup来搭建编译环境,然后在熟悉的vs环境下开发,最后在matlab命令框中用mex xxx.c的方式编译mex源文件。不知道大家有没有注意,如果代码有语法问题,matlab的出错提示和vs的出错提示相像,如果回过头看看介绍手头介绍c与matlab混合编程的书,上面会说mex编译时用的就是setup时选择的编译器。先搜搜文档上关于mex -setup的内容,结果如下:

该页面的最下方有个连接跳转到帮助文档中所有关于mex文件注意事项的入口处,其中提到了在windows下编译mex的方法:


点击进入,开始是关于命令行工具搭建编译环境,拖到最下面是IDE工具的搭建:


上面的步骤描述的很清楚,其中没有要求修改输出文件名为.mexw32...

文档上虽然描述了编译的过程,但是没有提到怎么运行,我尝试了几次,把调用mex输出文件放在本文最后。

参考这个文档总结出整个过程如下:

1.创建工程名为sums的空dll工程,源码如下

#include "mex.h"
#include "matrix.h"

void mexFunction(int outArgc,mxArray* outArgv[],int inArgc,mxArray* inArgv[])
{
	mexPrintf("sums\n");
}


2.设置链接库和头文件 预定义宏

2.1)头文件路径和预定义宏

2.2)链接库及路径:

3.创建并添加def文件

LIBRARY sums.dll
EXPORTS mexFunction

动态库的名字是sums.dll因此library名为sums.dll,mex文件的调用入口函数是mexFunction。因此要导出这个函数。

4.设置mex文件的调试工具,这个倒可以参考文章开头提到的书

6.设置断点,vc++6中F5调试运行,之后会跳出matlab。如何才能进入mexFunction函数?先在matlab命令行中切换到dll文件所在路径,然后输入vc++dll的名字作为matlab的函数名,我的输出是sums.dll,因此这个函数名是sums


至此,已经可以调试mex文件了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab MEX文件是一种可以在Matlab环境中调用的C语言或Fortran等衍生程序。它们实际上是带有输出函数mexFunction的动态链接库(dll)文件MEX文件提供了与其他语言编写的函数的接口,使得在Matlab中可以像调用内置函数一样调用这些函数,从而实现代码的重用,同时提高数据处理的效率。需要注意的是,Matlab的指标从1开始,而C语言的指标从0开始。举个例子,函数a=屏幕快照(b)是一个使用MEX文件实现的用于捕捉屏幕的函数,其中b是双精度数据,当b为0时,捕捉的屏幕不包括Matlab窗口,而当b不为0时,捕捉的屏幕包括Matlab窗口。编译使用mex命令将C语言代码编译为MEX文件,然后就可以在Matlab中调用该函数进行屏幕截图。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Matlab中的mex文件](https://blog.csdn.net/weixin_52135350/article/details/127351126)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [捕捉屏幕:matlab mex 文件捕捉屏幕-matlab开发](https://download.csdn.net/download/weixin_38689824/19318383)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值