已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Vs2015联合matlab2016b生成.mexw64文件 2017.12 最近要用C-mex文件,搜索了好几天在网上没有发现有用的资料,要么资料太旧,使用不了,最终在matlab帮助文档和国外的网站论坛上求助最终后成功。在此要特别强调,遇到问题的第一件事是去查帮助文档,而不是search。耐下心去看英文文档,真正高深的有用的基本上在帮助文档里面都有解释。实在解决不了的去论坛上提问,高手还是很多的。最后程序也可以在Codeblocks上运行生成,感谢外国友人的帮助,有时间的话会写一篇关于Codeblocks上运行生成mexw64文件的文章。有想知道了解的可以私信我。一、Matlab和IDE混合编程的方法有以下几种:1、 matlab调用由IDE编译出来的mex文件(相当于动态链接文件,这一点相当重要,不要使用生成控制台程序,这一点一错,后面都不用看了),老版本的mex文件后缀是.dll,新版本的mex文件后缀是.mexw32/64(根据版本生成)。2、 IDE通过engine调用matlab文件。以上两种方法matlab帮助文档写的都包括,这种只详细讲第一种方法。二、使用的平台是matlab2016b 64位和VS2015社区版。(把下面所述的项目,C文件名称全部改为arrayProduct)1、 新建一个项目,选择win32/win32项目(可用于创建DLL和静态库项目), 不是选择的win32控制台应用程度。下面输入位置名称等,下一步选择程度类型为DLL,设置一个空项目2、 然后生成解决方案如图所示在源文件里面添加一个C文件,或者已有的C文件。因为matlab是64位,所以调试工具也要选择X643、 在源文件里面新建一个模块定义文件.def,文件的名称与项目,C文件名称一致。添加内容如下4、 设置项目属性:1、 平台是X64,在配置属性里面的目标扩展名更改为:.mexw642、 在C/C+常规项里的附加包含目录是设定:C:Program FilesMATLABR2016bexterninclude这个里面包含的应该是VS所需要调用的matlab的头文件。3、在C/C+预处理器定义里面加入: MATLAB_MEX_FILE 不知道起什么作用,帮助文档里面这样要求的,网上搜索的都没这项。4、在链接器/常规里面输出文件定义为: ap.mexw64 文件名为项目名/C文件名,所有名称保持一致5、 在链接器/常规/附加库目录时定义; C:Program FilesMATLABR2016bexternlibwin64microsoft 这里应该是链接器寻找动态文件(第6项)的目录。6、 在链接器/输入里面定义: libmx.lib;libmex.lib;libmat.lib; 这是按照matlab帮助文件写的,中间要加;网上搜索的有的要加入libeng.lib, 还有的说中间不能加;只能回车。7、 因为之前添加的模块定义文件,所以在链接器/输入里面的模块定义文件里面自动生成了ap.def。如果是添加的,此外应该定义添加的文件名。 这里应该是VS链接文件时所要用到的动态文件这样在VS里面的设置就完成了,点击生成文件,成功后在ap/ap文件夹里面可以找到生成的ap.mexw64文件,然后把这个文件copy到MATLAB的目前目录下(不能新建文件夹),这样就可以在matlab工作窗口时行调试了。附上C源代码:/*= * arrayProduct.c - example in MATLAB External Interfaces * * Multiplies an input scalar (multiplier) * times a 1xN matrix (inMatrix) * and outputs a 1xN matrix (outMatrix) * * The calling syntax is: * *outMatrix = arrayProduct(multiplier, inMatrix) * * This is a MEX-file for MATLAB. * Copyright 2007-2012 The MathWorks, Inc. * *=*/#include mex.h/* The computational routine */void arrayProduct(double x, double *y, double *z, mwSize n) mwSize i; /* multiply each element y by x */ for (i=0; in; i+) zi = x * yi; /* The gateway function */void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs) double multiplier; /* input scalar */ double *inMatrix; /* 1xN input matrix */ size_t ncols; /* size of matrix */ double *outMatrix; /* output matrix */ /* check for proper number of arguments */ if(nrhs!=2) mexErrMsgIdAndTxt(MyToolbox:arrayProduct:nrhs,Two inputs required.); if(nlhs!=1) mexErrMsgIdAndTxt(MyToolbox:arrayProduct:nlhs,One output required.); /* make sure the first input argument is scalar */ if( !mxIsDouble(prhs0) | mxIsComplex(prhs0) | mxGetNumberOfElements(prhs0)!=1 ) mexErrMsgIdAndTxt(MyToolbox:arrayProduct:notScalar,Input multiplier must be a scalar.); /* make sure the second input argument is type double */ if( !mxIsDouble(prhs1) | mxIsComplex(prhs1) mexErrMsgIdAndTxt(MyToolbox:arrayProduct:notDouble,Input matrix must be type double.); /* check that number of rows in second input argument is 1 */ if(mxGetM(prhs1)!=1) mexErrMsgIdAndTxt(MyToolbox:arrayProduct:notRowVector,Input must be a row vector.); /* get the value of the scalar input */ multiplier = mxGetScalar(prhs0); /* create a pointer to the real data in the input matrix */ inMatrix = mxGetPr(prhs1); /* get dimensions of the input matrix */ ncols = mxGetN(prhs1); /* create the output matrix */ plhs0 = mxCreateDoubleMatrix(1,(mwSize)ncols,mxREAL); /* get a pointer to the real data in the output matrix */ outMatrix = m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外贸跟单员考试多选题练习及答案
- 冀南技师学院辅导员招聘真题2024
- 北语15春《计算机基础》作业1答案
- 2014计算机常用工具软件期中考试试题
- 《建筑施工新技术及应用》复习题
- 二建考试题目内容及答案
- 2025年注册测绘师资格考试真题和答案分析
- 广东2023年民航招飞考试报名流程详细说明
- 2025年二级建造师考试试题一附答案详解【典型题】
- 2025年北京公务员考试申论真题(乡镇)及答案
- 元宇宙的运营方案
- 四川省凉山州西昌市2025-2026学年高一上学期期中学科素养监测数学试题(无答案)
- 中药就业创业方向分析
- 安全生产烷基化考试题库及答案解析
- 2025南水北调东线总公司公开招聘3人笔试历年常考点试题专练附带答案详解2套试卷
- 海康威视监控设备故障排查与操作手册
- 哈三中2026届高三上期期中考试英语试卷(含答案)
- 宣城市中医院透析患者营养评估与指导考核
- 2025年云南省玉溪市辅警人员招聘考试题库及答案
- 折弯零基础入门知识培训课件
- 2025年及未来5年中国低端服务器市场运行态势及行业发展前景预测报告
评论
0/150
提交评论