



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ATLAB提供了许多方法与VC程序的通信:MATLAB引擎(ENGINE)模式,采用了客户机/服务器(CLIENT/SERVER)的计算形式,通过MATLAB应用程序接口(API)中有关函数,在VC环境中调用MATLAB函数,但此种方法需要MATLAB环境后台支持,因此系统必须安装MATLAB;MATLAB本身提供的MCC工具编译,编译m文件生成VC+或c语言,直接在VC中使用;MATLAB的MEX工具将m文件编译成DLL,供VC调用。MATLAB现具有的MATLAB Addin(其包装了MCC、MEX)更方便了第二、三种方法的应用,现本系统的实现就是以第三种为基础的。2.1 MATLAB与VC实现互连为了在开发时实现对MATLAB的具体功能的调用,应首先在操作系统中安装MATLAB工具软件,之后并运行此工具软件,依次执行“mex setup;mbuild setup;cd(prefdir); mccsavepath;”命令。之后运行VC开发工具,从VC+菜单中依次打开“Tools-Customize-Add-ins and Macro Files”,选中MATLAB Addin宏,可以看到工具栏中多了一个。现在VC就可以利用它来得到m文件所对应的c、c+文件。2.2 开发工具VC运行环境设置开发时,须对VC的开发环境变量进行设置。通过“Tools-Options-Directories”找到的“Directories”项中添加环境变量。添加头文件和库文件搜索路径有(本计算机的文件搜索路径为):F:MATLAB6P5EXTERNINCLUDE F:MATLAB6P5EXTERNINCLUDECPP同时将MATLAB的链接库添加到VC中。从“Tools-Options-Directories”中“Show directories for:”下拉框里选择“Library files”,然后再在“Directories”项中添加环境变量。F:MATLAB6P5EXTERNLIB F:MATLAB6P5EXTERNLIBWIN32F:MATLAB6P5EXTERNLIBWIN32MICROSOFTMSVC60上述为VC编译MATLAB的m文件生成C代码的环境。同时为了编译JNI的h文件,还须通过菜单Tools.和Project添加如下头文件和库文件搜索路径:D:JBUILDER6JDK1.3.1INCLUDE D:JBUILDER6JDK1.3.1INCLUDEWIN322.4 VC生成DLL本系统首先用VC建立“MATLAB Project Wizard”项中名称为showpicture的Project.在VC6.0下调用Matlab的m文件 一、Matlab编译环境的设置对matlab编译环境的配置如下:为了在开发时实现对MATLAB的具体功能的调用,应首先在操作系统中安装MATLAB工具软件,之后并运行此工具软件,依次执行“mex setup;mbuild setup;cd(prefdir); mccsavepath; ”命令。 二、创建动态链接库(*.DLL)创建动态链接库主要有两种方法:一种是使用 Matlab为VC+ IDE提供的Add-in。这种方法比较简单,方便快捷,只要 在VC+中创建工程的时候选择Matlab Project Wizard,并且在接下来的Step1中的Visual Matlab Application Type 选择 Shared M-DLL就可以了。接下来就是添加*.m文件, 进行编 译 了。另一种方法就是使用Matlab的mcc命令将*.m文件编译为动态链接库(*.DLL)。mccB csglsharedlib: youlibname function1 funcion2来创建我们所需要的动态链接库 DLL文件。其中参数-B表示使用的是Bundle Files作为参数,csglsharedlib是-B的参数,意 思是生成使用Matlab图形库的C共享动态链接库,youlibname是你想要生成的动态链接库 DLL的文件名,注意csglsharedlib与youlibname之间有一个冒号“:”连接,function1为你想要加入到动态链接库DLL中的函数名,如果有多个函数,各个函数名用空格隔开。举例:创建所需的Matlab函数文件 myfun.m。function y=myfun(timeend)t=0:0.001:timeend;y=sin(2*pi*50*t);plot(y);然后使用命令mcc -B csglsharedlib:mylib myfun 生成动态链接库DLL。Matlab会生成一 系 列 文 件, 其中 mylib.h mylib.lib mylib.dll 以及 相 同目 录 下 的 bin 下 的FigureMenuBar.fig 和 FigureToolBar.fig是我们在以后所需要使用的。三、在VC+中使用Matlab生成的动态链接库(*.DLL)1、设置 Include 和 Library 目录在VC+IDE中选择Tools-Options-Directories。 在 Show directoris for:中选择Include files,添加如下两个目录:externinclude externincludecpp 在 Show directoris for:中选择Library files,添加如下两个目录: externlibwin32 externlibwin32microsofmsvc6 这里假设为你的Matlab的安装目录。这些操作只需要一次。以后的工程中不需再进行操作。 2、工程 (project)本身的一些设置 (1)、在 VC+ IDE 中 选择 Project-Setting-C/C+在Category中选择Code Generation,在Use run-time library中选择 Multithreaded DLL。 在Category中选择Precompiled Headers,选择Automatic use of precompiled headers,并且在Through header下面添加stdafx.h。在Category中选择Preprocessor,在preprocessor definitions中添加MSVC, MSWIND, IBMPC。 (2)、在VC+ IDE中选择 Project-Settings-Link 在Categories中选择Input,在Ignore libraries:中填入:msvcrt.lib。 3、为工程添加相应的文件把刚才生成的mylib.h mylib.dll mylib.lib和externlibwin32下的libmatpm.lib,externlibwin32microsofmsvc6 下的所有*.lib文件复制到VC+工程的文件夹下,并且用add to project/files 添加的工程中。4、使用DLL(1)、首先要在使用DLL中函数的源文件中加上头文件mylib.h。(2)、注册DLL在使用之前还需要对mylib.dll进注册,使用完毕之后需要对其进行释放。注册使用函数mylibInitiallize();释放使用函数mylibTerminate()。函数名的规则就是youlibname+Initialize(Terminate)。 这两函数在mylib.h 中可以找到。mylibInitialize()不仅注册了刚才生成的mylib.dll,同时它也注册了Matlab本身的一些动态链接库(*.DLL);同理mylibTerminate()不仅释放了刚才生成的mylib.dll,同时它也释放了Matlab本身的一些动态链接库(*.DLL)。因此在注册了mylib.dll之后,我们也可以使用 Matlab的数学库中的函数,例如mlfabs(),mlfAssign()等等 。 在使用mylib.dll 的时候,存在着一个VC+和mylib.dll中的函数之间数据交互的问题 。由于mylib.dll中的函数所接受的参数是mxArray 型数据 。因此我们要使用Matlab为 我们提供的External Interfaces/ API 函数来创建mxArray 型数据,大量的API函数可以参见Matlab 的帮助文件MatlabExternal Interfaces/API ReferenceC MX-Functionsx 小节 。还有一个需要注意的问题就是原来的函数名myfun 变成了mlfMyfun。可以在mylib.h中看到。下 面 就是一个 实 例 /包含头文件 #include “mylib.h” /注册动态链接库 mylibInitialize(); double x=0.04; /创建 mxArray 型数据并对其赋值 mxArray *t; t=mxCreateDoubleMatrix(1,1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《世界地理探险:初中地理野外考察活动教案》
- 产品品质检验及优化方案框架
- (正式版)DB15∕T 3207.2-2023 《秋播大葱生产技术规程 第2部分:栽培》
- 居家养老服务保障承诺函(5篇)
- 机械基础 第2版 习题答案
- 采购与供应商信息管理及操作指引平台
- 宋代词牌赏析:大三语文辅导教案
- 客户关系管理策略与案例分析模板
- 质量控制流程及检测记录模板
- 守秘责任下知识产权保护承诺书(8篇)
- 视网膜中央动脉阻塞的急救和护理
- 国际金融学 第一章 国际收支 南京大学商学院
- HY/T 087-2005近岸海洋生态健康评价指南
- GB/T 5563-2013橡胶和塑料软管及软管组合件静液压试验方法
- GB/T 3600-2000肥料中氨态氮含量的测定甲醛法
- GB 2715-2005粮食卫生标准
- OA流程表单案例
- 医师多点执业注册申请表
- 《边坡稳定性分析》课件
- 刮板输送机-课件
- 深信服防火墙技术方案
评论
0/150
提交评论