




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC+6.0与MATLAB R2010a混合编程实例VC中调用MATLAB编译生成的动态链接库方法软件:MATLAB 7.10(R2010a),VC+6.0系统环境变量:在我的电脑属性高级环境变量系统变量path中,添加D:MATLABR2007abinwin32。备注:如果在MATLAB中mcc命令出错,提示“cmd不是内部或外部命令。”,是因为path中system32的路径被修改了,需要把系统的变量添加进去。第一部分:对MATLAB程序进行编译,得到动态链接库1 运行mbuild setup,安装VC+6.0编译器。2 编写MATLAB函数,(精通MATLAB与C+混合编程设计 186页的例子) m文件为:function y = sincplot(n) x1 = 0.01:0.01:n*pi; y1 = sin(x1)./x1; x2 = -n*pi:0.01:-0.01; y2 = sin(x2)./x2; y = y2 y1; plot(x2 x1,y);3 把m文件编译为dll文件运行mcc -B csharedlib:libsincplot sincplot.m,把m文件编译成动态链接库文件。其中要用到的程序为libsincplot.h,libsincplot.dll,libsincplot.lib,libsincplot.ctf。并复制到工程目录下。第二部分:在VC中调用MATLAB动态链接库1、 新建工程MFC单文档应用程序。启动VC,首先对VC进行配置,以便在VC中调用MATLAB动态链接库TOOLSoptionsdetectoriesincludes files中添加MATLAB路径D:MATLABR2010EXTERNINCLUDED:MATLABR2010EXTERNINCLUDEWIN32(貌似可以不添加)。Library files中添加D:MATLABR2010AEXTERNLIBWIN32MICROSOFT以上设置是对VC软件进行的设置,只需设置一次即可。2、 对新建的工程进行设置:进行项目必要的设置。VC+主界面进入projectSettings,点C/C+选项卡,Category选择Preprocessor,Additionalinclude directories下填入如下路径MATLABR2010aexterninclude点“link”选项卡,Category选择General,在下面的Object/library modules 那栏的最后添加libsincplot.lib mclmcrrt.lib其中libsincplot.lib,是MATLAB中编译时,产生的lib文件。两个库之间以及和其他库以空格隔开。然后Category选择input,Additionallibrary path下填写: .MATLABR2010aexternlibwin32microsoft把libsincplot.dll文件拷贝到VC工程debug目录下,或者windows系统目录system或者syetem32下。把libsincplot.h,libsincplot.lib拷贝到VC工程目录下,并把libsincplot.h添加到工程中。把libsincplot.ctf拷贝到VC工程的debug目录下。然后就可以在VC+中进行编程,调用MATLAB编译得到的动态链接库了。实验中采用MFC建立的单文档应用程序,编程介绍如下。编程细节:1 在CSinplotView的包含头文件 #include libsincplot.h2 定义要用到的变量,maArray是MATLAB和VC的接口数据类型,红色的为增加的代码。class CSinplotView : public CViewprotected: / create from serialization onlyCSinplotView();DECLARE_DYNCREATE(CSinplotView)/ Attributespublic:CSinplotDoc* GetDocument();/ Operationspublic:mxArray *pArrayIn;mxArray *pArrayOut; int isOK;int m_isInView;/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CSinplotView)3 在构造函数中进行初始化:mclInitializeApplication,libsincplot1Initialize#include stdafx.h#include sinplot.h#include sinplotDoc.h#include sinplotView.h#include libsincplot.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CSinplotViewIMPLEMENT_DYNCREATE(CSinplotView, CView)BEGIN_MESSAGE_MAP(CSinplotView, CView)/AFX_MSG_MAP(CSinplotView)ON_COMMAND(plot, Onplot)/AFX_MSG_MAP/ Standard printing commandsON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview)END_MESSAGE_MAP()/ CSinplotView construction/destructionCSinplotView:CSinplotView()/ TODO: add construction code hereisOK = mclInitializeApplication(NULL,0);if (!isOK)MessageBox(初始化app失败);isOK=libsincplotInitialize();if (!isOK)MessageBox(初始化lib失败);this-pArrayIn=NULL;this-pArrayOut=NULL;m_isInView=0;CSinplotView:CSinplotView()if(pArrayIn)mxDestroyArray(pArrayIn);if(pArrayOut)mxDestroyArray(pArrayOut);libsincplotTerminate();isOK = mclTerminateApplication();if (!isOK)MessageBox(结束程序错误!);BOOL CSinplotView:PreCreateWindow(CREATESTRUCT& cs)/ TODO: Modify the Window class or styles here by modifying/ the CREATESTRUCT csreturn CView:PreCreateWindow(cs);/ CSinplotView drawingvoid CSinplotView:OnDraw(CDC* pDC)CSinplotDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/ TODO: add draw code for native data here/ CSinplotView printingBOOL CSinplotView:OnPreparePrinting(CPrintInfo* pInfo)/ default preparationreturn DoPreparePrinting(pInfo);void CSinplotView:OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add extra initialization before printingvoid CSinplotView:OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)/ TODO: add cleanup after printing/ CSinplotView diagnostics#ifdef _DEBUGvoid CSinplotView:AssertValid() constCView:AssertValid();void CSinplotView:Dump(CDumpContext& dc) constCView:Dump(dc);CSinplotDoc* CSinplotView:GetDocument() / non-debug version is inlineASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CSinplotDoc);return (CSinplotDoc*)m_pDocument;#endif /_DEBUG/ CSinplotView message handlers/在菜单栏增加按钮调用void CSinplotView:Onplot() / TODO: Add your command handler code hereif(pArrayIn=NULL)pArrayIn = mxCreateDoubleMatrix(1,1,mxREAL);pArrayOut = mxCreateDoubleMatrix(1,1884,mxREAL);/create*(mxGetPr(pArrayIn) = 10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年会展策划与设计中级考试热点分析及模拟题详解
- 2025年生物质碳化专用炉项目发展计划
- 2025年电力测量仪表项目建议书
- 腕管综合征护理
- 2025年家畜良种胚胎生物工程制品项目合作计划书
- 安徽省A10联盟2025-2026学年高二上学期9月学情调研生物试卷(含答案)
- 2025年教具及类似用具项目发展计划
- 执业临床考试题及答案
- 2025学年北京市房山区高三语文上学期开学考试卷附答案解析
- 2025-2026学年云南省部分学校高二(上)联考数学试卷(8月份)含答案
- 【MOOC】法说西游记-湖南大学 中国大学慕课MOOC答案
- 旅游岗位招聘笔试题与参考答案(某大型央企)2025年
- 2022上海小升初语文试卷真题及答案(历年10卷)
- 钢琴介绍 课件
- 手术中的电生理监测
- 部编人教版五年级上册语文阅读理解专项试卷及答案
- 软件系统故障恢复及应急预案
- 中等职业学校英语教学大纲附件五:词汇表
- 泰戈尔-飞鸟集中英文版全
- 2024年小学六年级上册体育教案全册
- 07SJ507轻钢龙骨布面石膏板、布面洁净板隔墙及吊顶图集
评论
0/150
提交评论