Matlab程序在VC中的调用

合集下载

vc++中调用matlab函数的方法:COM组件

vc++中调用matlab函数的方法:COM组件

在利用vc++编程时,常需要一些特殊的数学函数,因此可以调用matlab中的强大的数学函数,通常使用的方法有引擎和com方法。

下面对此两种方法进行简单介绍。

1。

引擎,如何设置?matlab安装在c:\matlab6p5操作系统:windows2000(1)在vc中把“工具”-〉“选择”菜单中的“目录”选项卡中设置好include(C:\MATLAB6P5\EXTERN\INCLUDE),executable files(c:\matlab6p5\bin\win32)和library(C:\MATLAB6P5\EXTERN\LIB\WIN32\MICROSOFT\MSVC60)目录,包括进来上面这两个目录。

(2)在C:\MATLAB6p5\bin\win32\mexopts下双击msvc60opts.bat和msvc60engmatopts.bat(3)在vc中把“工程”-〉“设置”选项卡中的Link的“对象/模块库”中再加上以下内容:libeng.lib libmat.lib libmatlb.lib libmatlbmx.liblibmex.lib libmmfile.lib libmwarpack.lib libmwlapack.liblibmwmcl.lib libmwrefblas.lib libmwservices.lib libmwsglm.liblibmx.lib libut.lib mclcommain.lib sgl.lib(4)最后在编写程序时加入这么一句预编译语句#include<c:\matlab6p5\extern\include\engine.h>2。

com组件首先,设置合适的编译器。

在MATLAB命令窗口里敲:mbuild–setup和mex–setup,完成编译器的设置。

●Please choose your compiler for building standalone MATLAB applications:Would you like mbuild to locate installed compilers[y]/n?y●Select a compiler:[1]Lcc C version2.4in C:\MATLAB7\sys\lcc[2]Microsoft Visual C/C++version6.0in C:\Program Files\Microsoft Visual Studio[0]NoneCompiler:2●Please verify your choices:Compiler:Microsoft Visual C/C++6.0Location:C:\Program Files\Microsoft Visual StudioAre these correct?([y]/n):y●Try to update options file:C:\Documents and Settings\Administrator\ApplicationData\MathWorks\MATLAB\R14\compopts.batFrom template:C:\MATLAB7\BIN\WIN32\mbuildopts\msvc60compp.batDone...-->"C:\MATLAB7\bin\win32\mwregsvr C:\MATLAB7\bin\win32\mwcomutil.dll"DllRegisterServer in C:\MATLAB7\bin\win32\mwcomutil.dll succeeded-->"C:\MATLAB7\bin\win32\mwregsvr C:\MATLAB7\bin\win32\mwcommgr.dll"DllRegisterServer in C:\MATLAB7\bin\win32\mwcommgr.dll succeeded●Please choose your compiler for building external interface(MEX)files:Would you like mex to locate installed compilers[y]/n?y●Select a compiler:[1]Digital Visual Fortran version6.0in C:\Program Files\Microsoft Visual Studio[2]Lcc C version2.4in C:\MATLAB7\sys\lcc[3]Microsoft Visual C/C++version6.0in C:\Program Files\Microsoft Visual Studio[0]NoneCompiler:3●Please verify your choices:Compiler:Microsoft Visual C/C++6.0Location:C:\Program Files\Microsoft Visual StudioAre these correct?([y]/n):yTry to update options file:C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R14\mexopts.batFrom template:C:\MATLAB7\BIN\WIN32\mexopts\msvc60opts.batDone...1.设置系统路径。

VC与Matlab混合编程

VC与Matlab混合编程

VC与Matlab混合编程本⽂主要介绍VC与Matlab混合编程的两种⽅法,并详细介绍了VC向Matlab传递复杂数据:结构体的⽅法,有详细代码说明。

Matlab 主要⾯对科学计算、可视化以及交互式程序设计的⾼科技计算环境,但由于Matlab开发平台上开发的程序不能脱离Matlab运⾏环境,因⽽在处理⼀些实际应⽤问题时显得灵活性不⾜,⽽VC++则在⼀定程度上能够弥补这⼀漏洞,因此,将⼆者结合共⽤,各献其长,可以为科研⼯作和⼯程开发提供更为强⼤的技术⽀持。

Matlab作为控制系统设计的⼀种通⽤⼯具,它可以很⽅便的和VC进⾏连接。

⼀般⽽⾔,Matlab与VC混合编程的实现⽅法有很多种,这⾥主要介绍以下两种:1. VC调⽤Matlab Engine的⽅式:Matlab Engine是⼀组Matlab提供的接⼝函数,⽀持C/C++语⾔,Matlab Engine采⽤C/S(客户机/服务器)模式,Matlab作为后台服务器,⽽C/C++程序作为前台客户机,向Matlab Engine传递执⾏命令和数据信息,从Matlab Engine接收执⾏结果。

⽤户可以在前台应⽤程序中调⽤这些接⼝函数,实现对Matlab Engine的控制。

采⽤这种⽅法⼏乎能利⽤Matlab全部功能,但是需要在机器上安装Matlab软件,缺点是执⾏效率较低。

下⾯简单介绍下这种⽅式的实现步骤:1.1 API接⼝介绍先来介绍⼀组Matlab提供的引擎API接⼝:(仅作简单功能介绍,详细参数说明请参考Matlab帮助)Engine* engOpen(const char* startcmd)启动Matlab引擎int engClose(Engine* ep) 关闭Matlab引擎int engEvalString(Engine* ep, const char* string)执⾏Matlab表达式mxArray* engGetArray(Engine* ep, const char* name)获取⼀个变量数组的值int engPutArray(engine* ep, const mxArray* mp)设置⼀个变量数组的值int engPutVariable(Engine *ep, const char *name, const mxArray *pm)同上mxArray *engGetVariable(Engine *ep, const char *name)获取⼀个变量int engOutputBuffer(Engine* eP,char* p,int n)获取输出字符串1.2 VC环境配置要想在VC集成环境下调⽤Matlab引擎实现VC和Matlab的混合编程,⼀般需要经过以下⼏个必要的步骤:(以下以Matlab2008a和VS2005版本为例)(1)添加include路径:将“\extern\include”(在Matlab的安装路径下)路劲添加到VC编译器的include下(2)添加lib路径:将“\extern \lib\win32\microsoft” (在Matlab的安装路径下) 路径添加到VC编译器的lib下(3)加载lib:需要加载⾄少libmx.lib、libmat.lib、libeng.lib三个库(4)include头⽂件:在要使⽤ engine 函数的地⽅包含engine.h头⽂件1.3 引擎调⽤接下来就可以在VC中调⽤Matlab引擎了,简单的⽰例代码如下:#include "engine.h"#pragma comment(lib, "libeng.lib")#pragma comment(lib, "libmx.lib")#pragma comment(lib, "libmat.lib")void TestDeno(){Engine* pEng = NULL;if (!(pEng = engOpen(NULL))){printf("Open matlab enging fail!");return;}//call Engine plot A*sin(t)+B A=2 B=1mxArray *A = NULL;double init = 2;A = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy((void*) mxGetPr(A), (void*)&init, sizeof (double));engPutVariable(pEng, "A", A);init = 1;memcpy((void*) mxGetPr(A), (void*)&init, sizeof (double));engPutVariable(pEng, "B", A);mxDestroyArray(A);Sleep(3*60*1000);engEvalString(pEng, "t=0:0.2:7;plot(t,A*sin(t)+B);");if(NULL != pEng){engClose(pEng);}}⽰例代码通过VC调⽤Matlab引擎,绘制正弦曲线,相对简单,就不再详细解释,效图如下:2. VC调⽤Matlab DLL的⽅式DLL是⼀个可执⾏的⼆进制⽂件。

C语言环境中调用Matlab程序指南

C语言环境中调用Matlab程序指南

C语言环境中调用Matlab程序指南甄梓宁znzhen@Matlab在计算方面功能强大、编写简单,但是要运行Matlab程序必须装有Matlab并且用户界面也不够完善,因此除了计算的其他部分采用C等更规范完备的语言进行编写是较好的选择。

本文就对如何在C程序中调用Matlab程序作说明。

在C程序中调用Matlab程序有两大类方法。

第一种是调用Matlab引擎,第二种是将m文件打包成dll文件在C语言环境下调用。

前者虽然易于实现,可以实时监控程序的运行,但是独立性差,需要安装完整版Matlab,且每次调用都会启动MATLAB.exe进程;后者则实现复杂,调试麻烦,但只需安装MCR(Matlab Component Runtime),耗费资源较少。

关于MCR,请见第四章的说明。

至于两种方法需要在C环境中如何配置请见第五章。

而反过来若要在Matlab下调用C程序则一般使用Matlab自带的mex工具,在此不作介绍。

一、调用Matlab引擎调用Matlab引擎可以在WIN32、MFC中使用,它的原理实际上相当于打开一个精简版的Matlab然后往里面输命令。

下面是调用Matlab中的加法程序add.m的例子。

先在Matlab的work目录下创建add.m文件并编写程序如下:function s = add (a, b)s = a+b;在C程序中,首先打开精简版的Matlab:(所需头文件,引用库等见第五章)Engine *ep = engOpen (NULL);编译运行后,会自动打开一个命令行监控窗口,输入pwd就可以看到当前的工作目录,于是需要先将工作目录转换至存放add.m的目录:engEvalString (ep, ”cd ..\\..\\work”);engEvalString是往Matlab里输命令的函数,显然我们的目标是成功运行:engEvalString (ep, ”s=add(a,b)”);当然,目前Matlab中并没有a和b两个变量,因此需要在C中初始化这两个变量并转换成Matlab基本变量类型mxArray,才能将它们输入到Matlab中。

VC++调用Matlab引擎(engine)配置方法

VC++调用Matlab引擎(engine)配置方法

如何在C/C++语言里调用Matlab引擎(engine)——(上篇)windows下的Visual C++平台Windows下调用Matlab引擎要做好以下三点设置(1)设置头文件目录(2)设置库文件目录,并添加链接库输入项libeng.lib和libmx.lib(3)设置环境变量以下以Visual Studio 2008为例来说明如何设置这三点:1、添加头文件目录依次选择:“工具”->“选项”,调出对话框后再在对话框左边“选择项目和解决方案”->“VC++目录”然后在右边选择“显示以下内容的目录”下的选框选择“包含文件”,再在目录列表的最下边空行处选中添加:matlab安装目录下的\extern\include路径比如我的是:C:\Program Files\MATLAB\R2011a\extern\include如果现在生成项目,链接将不会通过,比如可能会出现:1>engwindemo.obj : error LNK2019: 无法解析的外部符号_mxDestroyArray,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_mxGetPi,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engClose,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engGetVariable,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engOutputBuffer,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engEvalString,该符号在函数_WinMain@16 中被引用1>engwindemo.obj : error LNK2019: 无法解析的外部符号_engPutVariable,该符号在函数_WinMain@16 中被引用等链接错误;这就需要设置下面的库文件目录2、添加库文件目录在刚才调出来的对话框中,设置库目录:选择“显示以下内容的目录”下的选框选择“库文件”添加matlab目录下的C:\Program Files\MATLAB\R2011a\extern\lib\win32\microsoft注意:如果是项目要生成的是64位程序那么应该选择的是C:\Program Files\MATLAB\R2011a\extern\lib\win64\microsoft点击确定退出对话框,然后给项目添加链接库输入项:在解决方案资源管理器里选择对应的项目单机右键选择最下面的“属性”弹出属性对话框,在右边依次选择“配置属性”->“链接器”->“输入”,然后在右边“附加依赖项”那一项加上libeng.lib libmx.liblibmat.lib单击确定退出注意:(1)不要删除原有的依赖项(2)依赖项之间用空格隔开做到这一步时生成时就没问题出现了,但是运行程序时会出现“因为计算机中丢失libeng.dll”等类似问题第(3)步就解决这个问题的。

Matlab调用VC生成的dll的具体步骤

Matlab调用VC生成的dll的具体步骤

Matlab调用C生成的dll的具体步骤一、C生成dll文件(以vs2008为例)1创建项目: Win32->Win32项目,名称:MyDLL2新建头文件testdll.h,并编写相关程序注:一定要注意头文件的写法,此法是支持C的头文件,Matlab调用DLL只支持用C 语法写成的DLL,C++的一些关键特性如类、继承等都不支持,用起来的话局限性很大的,还不如单独再用M文件把算法再写一遍进行仿真呢。

具体程序如下#ifndef MATLABDLLTEST_H#define MATLABDLLTEST_H#ifdef __cplusplusextern "C"{#endif__declspec(dllexport) double add(double x, double y);#ifdef __cplusplus}#endif#endif3新建源文件testdll.cpp,并编写相关程序具体程序如下所示:#include "stdafx.h"#include "testdll.h"double add(double x, double y){return (x+y);}4新建模块定义文件mydll.def,并编写相关程序二、Matlab调用生成的dll1、编译器准备1)在Matlab的命令窗口输入:mex -setup2)选择你的编译器,我的是:[2] Microsoft Visual C++ 2008 SP1 in c:\Program Files\Microsoft Visual Studio 9.02、加载DLL:把编译连接之后产生的myDLL.dll和testdll.h文件拷贝到Matlab的当前工作目录下,并编写.m函数具体程序clc;clear all;close all;addpath('dll的具体路径即Matlab的当前工作路径')%输入dll文件具体的存储路径loadlibraryMyDLLtestDLL.h alias lib%加载MyDLL库,并重命名为lib,注意加载时常常需要MyDLL的头文件libfunctionsview lib %执行此命令后会生成如下窗口calllib('lib', 'add', 1.0,2.0)%只有出现上述窗口才能使用此命令参考链接:1、/s/blog_70b3b3a701015e98.html(此文忘记加模块定义文件mydll.def,而且在Matlab读取路径是的指令也是错误的,参考本文的指令就能跑通)2、/g710710/article/details/7255744(此链接的文章是VS生成dll的方法,但如果想用Matlab调用生成的dll在编写头文件时一定要用上文的编写指令,而不这篇链接里的指令,因为链接里的指令是生成C++的指令,而Matlab只识别C的写法)。

C++调用matlab动态库

C++调用matlab动态库

C++调用matlab动态库环境:Windows 7旗舰版(32位),VS2008,Matlab R2010b1. matlab中dll创建1.1 m文件编写function t = func(file)t=2;end将M文件保存为func.m,保存在d:/test文件夹中。

1.2 设置编译器在Matlab主窗口中将当前文件夹改为d:/test。

为了能够让VC调用Matlab程序,我们可以采用将Matlab程序包装成动态链接文件DLL的形式,然后让VC调用动态链接文件,因此在Matlab中,我们需要设置一下Matlab的编译库,在Matlab主窗口中键入如下代码:mex -setup然后出现Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n?键入y后回车,出现Select a compiler:[1] Lcc-win32 C 2.4.1 in D:\PROGRA~1\Matlab\sys\lcc[2] Microsoft Visual C++ 2008 SP1 in D:\Program Files\Microsoft Visual Studio 9.0[0] NoneCompiler:由于我们是需要用VC来调用Matlab函数,因此我们选择2,回车,出现Please verify your choices:Compiler: Microsoft Visual C++ 2008 SP1Location: D:\Program Files\Microsoft Visual Studio 9.0Are these correct [y]/n?键入y后回车,出现*************************************************************** ************Warning: MEX-files generated using Microsoft Visual C++ 2008 requirethat Microsoft Visual Studio 2008 run-time libraries beavailable on the computer they are run on.If you plan to redistribute your MEX-files to other MATLAB users, be sure that they have the run-time libraries.*************************************************************** ************Trying to update options file: C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB \R2010b\mexopts.bat From template:D:\PROGRA~1\Matlab\bin\win32\mexopts\msvc90opts.bat Done . . .*************************************************************** ***********Warning: The MATLAB C and Fortran API has changed to support MATLABvariables with more than 2^32-1 elements. In the near future you will be required to update your code to utilize the new API. You can find more information about this at:/doc/35346238.html,/support/solutio ns/en/data/1-5C27B9/?solution=1-5C27B9 Building with the -largeArrayDims option enables the new API.*************************************************************** ***********如果出现以上说明,则证明Matlab编译器设置成功了。

使用VC调用matlab_engine编程

使用VC调用matlab_engine编程

关于如何使用VC调用matlab engine编程刚开始学使用VC调用matlab engine编程的时候,遇到很多问题,就去百度找解决方法,但发现根本解决不了我的问题,因为网上大部分实例和步骤都是在matlab6.5和vc++6.0环境下完成的,但是现在我用的是matlab2010a,所以会出现很多环境配置的问题,写本文的目的是总结用我在用VC调用matlab engine编程过程中出现的问题和解决办法。

Matlab Engine 采用Client/Server的方式,通过ActivcX通道和Matlab接口来实现在VC编程环境中直接调用matlab中的指令。

调用使用的函数是:engEvalSting。

下面是自己的实践过程:如果是第一次使用,则要设置一下Visual C++6.0 编程环境中的include 和lib的路径指向。

我的matlab2010安装在D盘目录D:\MATLAB 2010一、设置VC相关属性。

(1)Visual C++6.0 编译环境的设置:通过菜单 Tools/ Options,打开Visual C++6.0设置属性页,进入 Directorie页面,在 Show Directories for 下拉列表中选择Include Files,添加路径:D:\MATLAB 2010\extern\include (这是我电脑中Matlab的安装路径);再选择下拉列表中的 Library Files,添加路径:D:\MATLAB 2010\extern\lib\win32\microsoft(我电脑中Matlab 的安装路径,但是在我查看资料的时候看到很多是D:\MATLAB2010\extern\lib\win32\microsoft\msvc60这个路径,但是我用的是MatlabR2010a,msvc60是matlab6.5老版本才有的,10.0版本没有这个文件,所以我们把路径设到D:\MATLAB 2010\extern\lib\win32\microsoft 就可以了)。

MATLAB中调用VC混合编程方法的研究与实现

MATLAB中调用VC混合编程方法的研究与实现
c l VC f n t n n a MAT AB p o e u e w t h o i ro al u ci s i o L r c d r i t e c mp l fMAT AB b h t o f MEX, n r vd d a c n r t h e L y t e meh d o a d p o i e o c ee e a l fa ta h n s i a tto h tc n a h e e a t mai n e ig T e r s l r v h tt e meh d e e t l ov x mp e o e c ig a ss n o lt a a c iv u o t i d x n . h e u t p o e t a h t o f c i y s l e t c s v t e p o lm fa c r t o a in o h ep d c me tt n i h o t a e p o a h r b e o c u ae lc t ft e h l o u n a i n t e s f r r g mme y MAT AB l n a e a d p o ie o o w r db L a g g , n rv d u
何 利 用 M r A 自带 的 编 译 器 通 过 ME 方 法 实现 在 MA L B程 序 中调 用 V 函数 , 结 合 实 际 给 出 了一 个 在 辅 Ar B L X TA C 并 助 教 学软 件 中 实 现 自动 索 引 的具 体 例 子 。 运 行 结 果 证 明 该 方 法 能 够 有 效 解 决 基 于 MA I B语 言 开 发 的 软 件 中 帮 TA 助 文 档 精 确 定 位 的 问题 . 为 其 他 类 似 应 用 提 供 参 考 。 并
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab程序在VC中的调用摘要:利用vc与matlab接口技术,用VC 调用Matlab 编译的DLL 文件进行复杂数据处理不仅简洁通用,更具有很强的实用性和可扩展性,在科学计算与工程运用领域具有广泛的推广应用价值。

关键词:MATLAB ;VC;DLL ;接口
1. VC与MATLAB简介
VC 是大家都非常熟悉的一个软件,它是MicroSoft公司开发的在Windows 环境下主要环境之一,用其中的MFC 可以快速方便地编写出各种友好的用户界面,且用VC ++ 开发的系统具有容易维护升级、界面友好,代码效率高、执行速度快等一系列优点,因此已成为目前应用中的主流之一。

①、MATLAB是Mathworks 公司开发出的一款著名软件,如今已成为世界上使用最广泛的数学软件,它具有强大的数值计算、数据处理、图象显示、符号运算、系统分析、模拟仿真功能,由于受到各个领域专家学者的青睐,在他们的共同努力下,经过多年的发展,如今的Matlab 不仅拥有功能完善的内部函数库,更有专用于各领域的强大包,在这个平台上只需寥寥数语便可完成在其它环境中复杂度不可想象的功能;另外,开放性也是Matlab 一个最重要、最受欢迎的特点,除内部函数外,所有Matlab 工具包中主包文件和各包文件都是可读可改的源文件,用户可通过对源文件的修改来形成新的包,
甚至亦可完全由自己编写源文件来构筑自己研究领域的专用包。

在欧美发达国家中,Matlab 已经成为应用线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学;成为攻读学位的大学生、硕士生、博士生必须掌握的基本技能;在设计研究单位和工业部门,Matlab 也被广泛地用于研究和解决各种具体工程问题。

Matlab在中国得到充分的重视,在各科研机构和高校中得到大量的使用。

②、 2 利用VC 与MATLAB接口实现matlab程序在VC中的调用
③、(1) 在Matlab 环境中编写. m 文件。

function y =Myfunc (x1 ,x2 ,x3) %x1 用来选择不同的数据处理函数,x2 ,x3 是待处理的数据if x1 = = 1
p = polyfit (x2 ,x3 ,1) ;
a = polyval (p ,x2) ;
plot (x2 ,x3 ,’+ ’,x2 ,a) ;
print (gcf ,’- djpeg’,’杨氏模量. bmp’)
y = (a (8) - a (1) )P(x2 (8) - x2 (1) ) ;
end
(2) 设置Matlab 的编译环境。

在Matlab 环境中运行mex2setup ,按屏幕提示要求选择编译器类型位置等有关信息;然后在Matlab 环境中运行mbuild2setup ,设置方法同上。

(3) 用mcc 将Myfunc. m转换为DLL 文件。

在Matlab 中运行:mcc 2B sgl 2t 2W libhg : dllDB 2Tlink :lib Myfunc. m 编译完成后将生成一批文件,提取其中的三个: dllDB. h、dllDB. lib、dllDB. dll 它们将被添加到VC 中去。

(4) 在VC 中调用DLL 文件进行编译。

首先对VC 的编译环境进行以下设置:
a. 选VC 编译器主菜单下的“”→“选择”,在跳出的对话框中选“目录”签页,并在“路径”列表框中把Matlab 的包含文件路径: (如: E: \ matlab6p5 \ extern\ include) ,库文件路径(如: E: \ matlab6p5 \ extern \lib) 和工作区所在路径(如: E: \ ketishiyan) 添加到VC的编译路径中去。

b. 把dllDB. h、dllDB. lib、dllDB. dll 三个文件复制到工作区所在路径(如:E: \ ketishiyan) 的目录下。

c. 引入头文件和库文件在需要调用DLL 的. cpp 文件的头部加入一行: #include“dllDB. h”,再选“工程”→“设置”,而后在“连接”签页的“对象/ 库模块”下加入:
E: \ matlab6p5 \ extern \ lib \ win32 \ microsoft \msvc60 \ libmat . lib
E: \ matlab6p5 \ extern \ lib \ win32 \ microsoft \msvc60 \ libmatlb. lib
E: \ matlab6p5 \ extern \ lib \ win32 \ microsoft \msvc60 \ libmmfile. lib
E: \ matlab6p5 \ extern \ lib \ win32 \ microsoft \msvc60 \ libmx. lib
E: \ ketishiyan \ ppp. Lib
d. 在需要使用DLL 的. cpp 文件中加入以下,比如下面的是实现待拟合数据的传送和结果接收的接口:
dllDBInitialize () ;
double slope ;
double a[10 ] = {0. 0} ;
double b[10 ] = {2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,11} ;
double b1[1 ] = {0. 0} ;
b1[0 ] = double (dllFunctionSelect1) ;
a[0 ] = m- ax0 ;a [ 1 ] = m- ax1 ;a [ 2 ] = m- ax2 ;a [ 3 ]= m- ax3 ;a[4 ] = m- ax4 ;
a[5 ] = m- ax5 ;a [ 6 ] = m- ax6 ;a [ 7 ] = m- ax7 ;a [ 8 ]= m- ax8 ;a[9 ] = m- ax9 ;
mxArray 3 A = mclGetUninitializedArray() ;
mxArray 3 B1 = mclGetUninitializedArray() ;
mxArray 3 B = mclGetUninitializedArray() ;
mxArray 3 C = mclGetUninitializedArray() ;
mlfAssign(&A ,mlfDoubleMatrix(1 ,10 ,a ,NULL) ) ;
mlfAssign(&B ,mlfDoubleMatrix(1 ,10 ,b ,NULL) ) ;
3结论
用VC 调用Matlab 编译的DLL 文件进行复杂数据处理。

实践证明,该模式不仅简洁通用,更具有很强的实用性和可扩展性,在科学计算与工程运用领域具有广泛的推广应用价值。

参考文献:
1飞思科技产品研发中心. Visual C 灵感.
2郝红伟. Matlab 6 实例.
3刘志俭,等. Matlab 应用接口用户指南.
4臧桂鹏,等. Visual C ++中文版新概念百例.
5储开颜,严利民,王朔中. VC 与MATLAB 的接口及其实现。

相关文档
最新文档