matlab与C混合编程生成.mex文件
来源:互联网 发布:vegas pro for mac 编辑:程序博客网 时间:2024/05/01 15:52
mex hello.c
D:\SOFT\MATLAB~3\BIN\MEX.PL: Error: Compile of 'hello.c' failed.
Error using mex (line 206)
Unable to complete successfully.
后来又根据这篇帖子:http://blog.sina.com.cn/s/blog_6ec1700e0100rqh9.html,将两者结合,最后完美解决问题,现在特此将所走的步骤贴出来,以帮助和我一样在路上的人!
正文如下:
一、VC6环境下的编译与调试Mex文件
MATLAB的MEX文件其实就是一个动态链接库,他的输出函数是mexFunction()。也可以在VC建立相应的程序进行调试。 设置VC6环境,添加头文件和库函数
1、在菜单tools(工具)下的option(选项)中选取Directories(目录),按照下图分布添加头文件和库文件。
注意:这里添加的是matlab在自己电脑上的安装根目录。
Figure 1 添加头文件
Figure 2 添加库文件
Figure 3 创建dll工程
3、添加.c文件
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[])
{
double *i;
i=mxGetPr(prhs[0]);
if(i[0]==1)
mexPrintf("hello,world!\n");
else
mexPrintf("大家好!\n");
}
4、设置工程
在Project(工程)的setting(设置)在对象/库模块下设置如下图:libmx.lib libeng.lib libmat.lib libmex.lib
Figure 4 设置工程
5、设置动态调试程序的路径
选择MATLAB作为调试路径,在Project(工程)的setting(设置)--调试下设置如下图
路径均为matlab的安装根目录
Figure 5 设置MATLAB调试路径
6、在VC环境下对.c文件进行编译。
7、点击执行按钮会启动matlab。
二、在matlab界面选择编辑器
1、mex -setup;
2、y;
3、Select a compiler:
[1] Lcc-win32 C 2.4.1 in D:\soft\MATLAB~3\sys\lcc
[2] Microsoft Visual C++ 2010 in d:\soft\VC2010
[3] Microsoft Visual C++ 6.0 in D:\soft
[0] None
Compiler: 1
注:若这里我选择1,则运行成功,最终可生产.mex文件,但是这种情况下程序中不支持有中文注释;若选择3,则会出现下列问题:
mex hello.c
D:\SOFT\MATLAB~3\BIN\MEX.PL: Error: Compile of 'hello.c' failed.
Error using mex (line 206)
Unable to complete successfully.
现在还不知道这里是什么原因,有待进一步的研究??
所以,这里根据我自己的电脑最好是选择2
4、y.
5、输入mex hello.c,编译成功,则会在hello.c所在文件下生成 .mexw32 文件。
6、将这个程序编译通过后,执行hello(1),屏幕上会打出: hello,World!
而hello(0)将会得到: hello,China!
后续又遇到的一些问题,一并贴出来:
1、 mex add.c
Specified export _mexFunction is not defined
Missing exports. Aborting
D:\SOFT\MATLAB~3\BIN\MEX.PL: Error: Link of 'add.mexw32' failed.
Error using mex (line 206)
Unable to complete successfully.
问题原因:MATLAB自带的LCC编译器不支持中文注释,而我的程序当中出现了中文注释,所以出现了上述问题
- matlab与C混合编程生成.mex文件
- Matlab与C/C++混合编程(mex文件)
- matlab/C混合编程--mex文件的编写、编译、调用
- Matlab中mex与C混合编程总结
- matlab中mex与c混合编程总结
- matlab 与c/c++ 混合MEX的编程
- MATLAB 与C混合编程:通过mex提高运行速度
- matlab与C语言混合编程-----利用Mex函数
- 一分钟了解"matlab与c混合编程mex"
- Matlab & C++ 混合编程mex文件的编写与调试
- C++与MATLAB混合编程:MEX编程
- matlab和C/C++混合编程--Mex
- matlab和C/C++混合编程--Mex
- matlab和C/C++混合编程--Mex
- matlab和C/C++混合编程--Mex
- Matlab与C++混合MEX编程
- Matlab与C/C++混合编程 MEX(Matlab调用C函数)
- 关于Matlab的MEX技术 10分钟教会你简单的matlab和C/C++混合编程(mex文件)
- MySQL Applier for Hadoop
- 毕业了我们应该放声大笑
- 301跳转代码全集(ASP|PHP|JSP|.NET)
- linux vi 用法
- 关于wchar_t 的输出及 wchar_t* 与 char*之间的相互转换
- matlab与C混合编程生成.mex文件
- hdu 1301 Jungle Roads
- 解决U盘不能弹出,提示:现在无法停止通用卷设备的解决方法(可行)
- bellman-ford 算法
- Android应用程序的编译和打包
- 再回南开
- 【Android】给定URL显示网络图片的实现方法
- Linux 使用pid文件结束nginx
- 修改属性值,控制时间,联合主键