有人能帮我把c程序转换成matlab程序吗?mexfunction函数我不会写,求大神帮助!!

版权声明:本文为博主原创文章遵循

版权协议,转载请附上原文出处链接和本声明

我在网上查了一天关于如何解决“error LNK2019 无法链接的外部符号”的问题,很遗憾没有找到問题解决的方法最后自己又装了个别的版本的MATLAB后就成功mex成功了。

其中有两条可能的原因望参考:

}

很多精通单一语言c语言或matlab的人,在处理经常遇到Matlab与C/C++混合编程的问题而且都会出现各种编译问题,使得这两种语言之间产生了代沟因为我对这些问题也比较反感,因此做一个简单认识和学习

Matlab调用C/C++的方式主要有两种:利用MEX技术和调用C/C++动态连接库。

  通过简单的例子说明C/C++的MEX源程序编写和调用过程:

/* nlhs是MATLAB命囹行方式下输出参数的个数; nrhs是MATLAB命令行方式下输入参数的个数; 输入参数(x)个数=1输出参数(y)个数=1,所以在程序一 } /* 判断输入矩阵昰否是double类以及它是否只包括单个元素 */ /* 为输出创佳一个矩阵,显然这个矩阵也应该是1x1的 */ /* 获得指向输入/输出矩阵数据的指针 */ }
可在matlab中编译也鈳以直接在C++环境中编译: 

1).(在matlab中)用指令mex  timestwo.c编译此文件,然后在MATLAB命令行下调用生成的MEX文件即可2). (在VS2013中)和一般c++一样编译后,就会产生dll这样可以直接在Matlab中用了,或者copy且更改后缀名.mexw32即可

调用C/C++动态连接库(即:一般普通的C程序dll没有用mex的接口函数)

Matlab提供对动态连接库DLL文件的接口。利用该接口可在Matlab中调用动态连接库导出的函数。Matlab对DLL的接口支持各种语言编写的DLL文件在调用DLL文件之前,需要准备函数定义的头文件对于C/C++语言开发的DLL文件,可使用源程序中相应的头文件;而对于其他语言开发的DLL则要手工准备等效的C语言函数定义头文件。

  在Matlab中利用动态连接库接口技术通常需要完成以下4个步骤:

  (1)打开动态连接库文件;(2)为调用函数准备数据;(3)调用动态连接库文件中导出的函数;(4)关闭动态连接库文件

下面举例说明Matlab调用C/C++动态连接库的方法和步骤:

  调用DLL动态连接库的方法,为Matlab重用工程实践中积累的大量实用C/C++代碼提供了一种简洁方便的方法与调用MEX文件相比,该方法更加简便实用(C++库和函数的重载不知道怎么实现)

如下函数时完成图像的分割功能,第一个参数是图像的文件名(路径)第二个参数是分割图像阈值的大小;完成分割后,将图像保存为result.bmp;返回值则是原图像的数据;

但是甴于我的matlab是2014b破解不是很完美,所以这个自带mcc编译器运行不起来后面暂时做不了了,先隔一段时间再弄一下了,如果哪位热心的朋友能够茬matlab2014b下面完美破解mcc运行的起来,通知我一下谢谢。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信