VB6.0调用matlab生成的dll文件

合集下载

关于vb,vc调用matlab的m.文件生成的dll.文件

关于vb,vc调用matlab的m.文件生成的dll.文件

Matlab函数转换为VB可用的DLLMatlab函数转换为VB可用的DLL段晓君摘要:一种利用Matcom将Matlab函数转换为VB中可用的动态链接库的方法,操作简单易行。

关键词:Matlab函数动态链接库DLL M-文件VB语言1 Matlab简介Matlab是MathWorks公司开发的一种工程计算语言。

它是一个交互系统,在Matlab 中的基本数据元素是一个不要求维数的复矩阵。

用Matlab可解决很多工程计算问题,特别是涉及到矩阵和矢量形式的问题。

Matlab是一个高度集成的语言环境,在它的界面下可以编写程序、运行程序并可进行跟踪调试。

对于广大的工程技术人员和科学研究人员来说,Matlab不失为一种很好的工具。

Matlab也有局限性,一般它不能脱离Matlab集成环境工作;而且编写界面的功能比较弱。

Matcom是一个从Matlab到C++的编译器,它可以节省用户的运算时间和内存要求。

MathTools公司利用Matcom技术编写了Mideva工具软件,它可以借用C++编译器将Matlab下的M-文件转换为可被Visual Basic、Excel以及Delphi调用的DLL 动态链接库或者是独立的可执行文件。

本文就M-文件到DLL的转换以及在VB中调用这一类DLL 的2个问题做了一些探讨。

文中针对Matlab5.0、VC5.0、VB5.0、Matcom4.0或相应的更高版本的软件进行了讨论。

2 M-文件到DLL的转换要将一个m-文件编译成DLL,需进行如下操作:启动运行Matcom4的Mideva,点击菜单File/Compile to dll,选择要转换的m-文件(该文件应该是能够作为函数被其它集成环境调用的m-文件,假设文件名为yourfile.m)。

值得注意的是,Mideva对M-文件有一定的要求,即该文件必须是1个函数,如果要编译没有输入也没有输出的脚本文件,可以先在Matlab中将它编辑成无输入无输出的函数,再按照上述操作进行转换。

VC6.0调用Matlab7.0编译动态库步骤

VC6.0调用Matlab7.0编译动态库步骤

VC6.0调用Matlab7.0编译动态库步骤1、Matlab步骤a)运行安装D:\MA TLAB7\toolbox\compiler\deploy\win32\MCRInstaller.exeb)安装matlab编译器MCR;c)配置mbuild –setup,( mex –setup可以不用);d)编写m函数文件;e)mcc –B csharedlib:libdllname mfilename.m,生成libdllname.h,libdllname.dll,libdllname.lib, libdllname.ctf文件。

2、VC步骤a)建立工程;b)将1.e生成的四个文件拷贝到工程目录下;c)在VC++6.0 下进行如下设置包含目录: Tools—>Options—>Directories—>Showdirectories for: Include files—><matlab7.0 安装目录>\Extern\Include;d)在VC++6.0 下进行如下设置lib文件包含目录:Tools—>Options—>Directories—>Show directories for: Library—><matlab7.0 安装目录>\Extern\Lib\Win32\Microsoft\msvc60;e)Project—>Add to Project—>Files⋯将C++头文件"libdllname.h"加入到VC++工程中,并在工程的头文件中加入#include "libdllname.h"。

还需设置当前工程的链接选项Project—>Settings—>Link—>Category:Input—>Object/library modules: dllname.lib;f)另外,还需将<matlab7.0 安装目录> \Extern\Lib\Win32\Microsoft\msvc60下所有库文件加入到VC工程中,Project—>Settings—>Link—>Category:Input—>Object/library modules: libeng.lib libfixedpoint.lib libmat.lib libmex.liblibmwarpack.lib libmwlapack.lib libmwrefblas.lib libmwservices.lib libmx.lib libut.libmclcom.lib mclcommain.lib mclmcr.lib mclmcrrt.lib mclxlmain.lib;g)初始化:mclInitializeApplication(NULL,0); lib dllname Initialize();h)增加mxArray 输入输出公共变量,用于数据交换。

VB调用MATLAB步骤

VB调用MATLAB步骤
Dim c As Variant ‘输出参数
a = Val(Text1.Text)
b = Val(Text2.Text)
Call hh.myadd(1, c, a, b) 'myadd为MATLAB中的函数名,1为输出变量个数,c为输出变量定义为variant型,a,b为输入变量,定义为double型
Y=a+b;
VB程序如下:
Private Sub Command1_Click()
Dim hh As New ABC.ab 'ABC 为COMPONENT NAME,ab为class name
Dim a As Double ‘输入参数
Dim b As Double ‘输入参数
3.matlab会列出所有电脑上所有的编译器,选择Microsoft Visual C/C++ version 6.0
4.The default location for Microsoft Visual C/C++ compilers is C:\Program Files\Microsoft Visual Studio, but that directory does not exist on this machine
Use C:\Program Files\Microsoft Visual Studio anyway [y]/n? 选择n
5.Please enter the location of your compiler: [C:\Program Files\Microsoft Visual Studio] 键入vc++6的安装位置E:\INSTALLBACK\Microsoft Visual Studio vc6.0

VB6.0怎么调用带参数的DLL?

VB6.0怎么调用带参数的DLL?

VB6.0怎么调用带参数的DLL?
vb6.0中可以创建DLL文件,也可以调用DLL文件,该怎么调用呢?下面我们就来看看详细的教程。

•软件名称:
•msdn for vb6.0(vb6 msdn) 精简中文版
•软件大小:
•20.6MB
•更新时间:
•2014-02-06立即下载
1、桌面上双击VB图标,打开Visual Basic。

2、打开的VB窗口中,选择文件---->新建工程选项。

3、新建工程窗口中,选择ActiveX DLL选项。

4、编辑窗口中,输入dll文件的代码,具体内容由个人决定。

5、单击文件---->保存工程,将dll工程保存。

6、单击文件---->生成dll,生成一个dll文件。

7、单击工程---->引用选项,如下图所示。

8、引用窗口中,单击浏览按钮。

9、选择要引用的DLL文件,单击打开按钮。

10、DLL文件就被引用到应用程序中了,单击确定按钮。

11、接下来就可以在应用程序中,插入组件,书写代码使用DLL
文件了。

以上就是VB6.0调用带参数的DLL的教程,希望大家喜欢,请继续关注脚本之家。

在VB6_0中调用MATLAB程序

在VB6_0中调用MATLAB程序
1 背景简介 1. 1 MATLAB 语言概述
MATLAB是 MathWorks 公司开发的/ 演算纸0 似的 程序计算语言, 是一个跨平台的科学计算环境。它集数值 分析、矩阵运算、信号处理和图形显示为一体, 构成了一个 方便的、界面友好的用户环境。MAT LAB 的推出得到了 各个领域的专家的广泛关注, 其强大的扩展功能更为各个
得指出的是, 这个程序是直接调用 MATLAB 的 Applica2
tion 函数, 不仅可以解决计算和文字显示的 MAT LAB 语
句, 而且还可以解决图形绘制问题, MAT LAB 的各种功能
都能调用, 以下是一个简单的例子:
例: 阶梯图的表现方法
在文本框(Richtextbox) 中输入以下程序:
最后, 为了能完全显示出计算结果的内容, 方便用户 的阅读, 给窗体加上垂直和水平的滚动条。添加一个新的 窗体, 这个窗体使应用程序界面具有透明的阴影效果, 使 其有立体感。生成的用户界面如图 1 所示。
图 1 用户界面
3. 2 调用 MATLAB 程序的实现
MATLAB 语言与 ActiveX 技术的关系在上面已经详
MATLAB 的主要特点是[ 1] : * 强大的计算功能。 * 计算结果和编程可视化。 * 极高的编程效率。 虽然 MATLAB 拥有诸多的好处, 但同时也存在以下 一些问题: ( 1) 运行速度慢。 ( 2) 无法脱离 MATLAB 环境运行。 1. 2 Visual Basic 6. 0 概述 VB6. 0 是微软公司推出的主流编程语言之一, 它与 传统的程序设计语言相比, 最突出的特点是可视化、事件 驱动和交互式。经过微软公司长期不断的完善、第三方资 源的大量加入以及广大爱好者的大力支持, VB6. 0 已经 成为功能强大、使用人数众多的编程语言。它提供了向导 自动生成代码, 支持拖放技术、属性检查、实施语法检查等 内置自动化技术, 大大降低了编写代码的工作量, 同时它 还提供了极其丰富的控件, 使得 VB6. 0 成为最简捷、最有 效开发 Windows 应用程序的工具。

VB6.0调用matlab生成的dll文件

VB6.0调用matlab生成的dll文件

VB6.0调用matlab生成的dll文件环境:win7 64位,matlab2010b,Vb6.0一、设置环境变量右键计算机——属性——高级系统设置——环境变量,在用户变量和系统变量中均添加如下路径:路径名为path 值为”C:\Program Files\MATLAB\R2010b\bin\win64”(matlab安装路径),重启计算机。

二、编写m文件,注意以function开头三、在matlab中设置编译环境1.在matlab命令窗口中输入mex –setup,选择n,然后在弹出的众多编译器中选择一个,最好选择VC++系列(在进行这一步时,现在电脑上安装VC的编译器,如VC++6.0、Visual Studio,注意要安装英文版),接下来一直选择y,直至看见Done……,证明这一步成功了;2.接下来输入么build –setup,接下来步骤与1相似,直至看见Done……。

四、进行编译,生成dll文件1.在matlab窗口中输入deploytool,在弹出的窗口中,name随便填,location选择默认即可,Target选择倒数第二项:Generic COM Component,单击OK;2.选择Add class,填写class name,单击Add files,选择所需编译的m文件,然后单击build按钮,等待编译结束,这是会看到生成的文件夹中含distrib这个文件夹,所需的dll文件即在里面。

五、注册dll开一个dos窗口(在开始里输入运行即可),在dos窗口中输入:cd/d /runtime/win64,回车,接着输入mwregsvr mwcomutil.dll,即对mwcomutil.dll 进行注册(这个dll是matlab下作的任何com组件都要用到的dll)。

六、在vb6.0中调用生成的dll文件1.打开vb6.0,点击工程——引用——浏览,找到放置dll文件处,选择,点击确定;2.vb6.0命令行处应写:Dim myplot As plot.plot1Set myplot = New plot.plot1……Call myplot.plot1(str, strname, xx5, yy2, y)(说明:其中myplot为自己取的名字,plot为matlab编译dll 文件时的class name,plot1为源文件m文件的名字)。

VB调用MATLAB混合编程教程(完整版)

VB调用MATLAB混合编程教程(完整版)

VB与MATLAB混合编程探讨摘要:介绍了VB与MATLAB混合编程的方法,二者结合可以充分利用VB的方便快捷和MATLAB软件工具箱的强大功能。

关键词:VBVC++MATLABDLL编译MATLABAdd-inMATLAB是MathWorks公司开发的科学计算环境,具有强大的计算绘图能力,提供大量的函数库、工具箱,几乎涵盖了所有的工程计算领域,被誉为“演算纸”式的工程计算工具。

但是MATLAB语言是一种解释执行的脚本语言,运算速度较慢是一个比较突出的问题。

VisualBasic作为一门易学易用的编程语言,受到很多工程技术人员的青睐,其执行速度相对较快,界面友好。

因此实现VB与MATLAB混合编程,可以为科研工作和工程应用提供有力的技术支持。

1基本思路及实现方法MATLAB提供了与C++、Fortran的程序接口,并没有提供直接与VB的接口。

目前VB与MATLAB混合编程方面主要使用以下一些方法:(1)在VB中通过调用MATLAB的引擎(Engine)接口,使用Windows的OLE或ActiveX通道与MATLAB通信。

通过Object.Execute MATLAB语句在程序中直接使用MATLAB提供的函数库和图形库。

这种方法可以较快地编写出程序;但在调用引擎时,会在后台启动一个MATLAB进程,影响程序运行速度,占用内存。

(2)通过使用嵌入VB的矩阵函数库MatrixVB的方法。

MatrixVB是由原MathTools公司开发的第三方插件,利用与MATLAB相似的函数、语法嵌入到VB中,可以象使用VB的函数、命令一样使用MATLAB函数。

这种方法语法和函数使用比较简单,编程效率很高,几乎完全融入VB语言,特别对图形的处理非常方便,弥补了其他方法在图形处理上的弱点。

安装后,只需在打开的工程中添加MatrixVB库即可(在工程->引用对话框中选中MMatrix)。

但由于其仍然采用解释执行,执行效率较低,实时运算难以实现。

在vb中调用dll的方法

在vb中调用dll的方法

在vb中调用dll的方法1 制作好DLL之后,就可以用VB调用它,实现VB调用C程序。

VB程序要使用DLL中的函数,首先必须要有特殊的声明,用Declare 声明语句在窗体级或模块级或全局模块的代码声明段进行声明,将动态链接库中的函数声明到VB中,供VB程序调用。

语句格式为:Declare Sub 过程名Lib [ Alias " 别名]([ByVal 参数AS类型]),或为Declare Function函数名Lib [Alias " 别名]([ByVal 参数AS类型])AS类型在声明中首先用Declare 关键字表示声明DLL中的函数。

在C语言中有的函数类型为VOID,它表示不具有返回值,则必须用关键字Sub将其声明成过程。

有的函数具有返回值,则必须用关键字Function将其声明成函数,并且在声明语句的最后要用AS关键字指明函数返回值的类型。

例如上面的ADD.DLL在VB中就可以声明为:Decl are Function ADD Lib “c:\ADD.d ll” (ByVal X AS Integer, ByVal Y AS Integer ,ByVal filein asstring)AS Integer通过此声明语句将函数ADD声明到VB中,便可直接调用。

2、dll文件中的函数好像是C语言写的,// 函数名:int __stdcall GetMacNo(int *MacNo)// 功能:获取卡机的卡机号(单机时)// 参数: MacNo[0]-被读出的卡机号// 返回值:0-成功,// 2-PC接收超时,// 3-应答错误dll的文件名是COMM232.dll函数的形参int *MacNo是指针吗?在VB中应该怎么声明和调用该函数?VB里也可以定义指针吗?问题补充:vb调用dll文件中的函数我是会的,但这儿的形参有一个星号才不知是怎么一回事,我是这样声明的对吗?Public Declare Function GetMacNo Lib "COMM232.dll" (ByVal MacNo As Integer) As Integer又应该怎么调用呢?要先定义一个指针的变量再传给*MacNo还是要怎么做?都说了MacNo是被读出的卡机号,那么就是传址的了。

VB6.0调用DLL-16.12.10

VB6.0调用DLL-16.12.10

VB6.0调用DLLHanford2016年12月10日目录目录第1章VB6.0调用DLL (1)1 VC++编写DLL (1)1.1 使用__stdcall (1)1.2 使用.DEF 文件 (1)2 简单数据类型 (2)2.1 传值(ByVal) (2)2.2 传址(ByRef) (3)2.3 传址(VarPtr) (4)2.4 转换为Variant (4)3 String (6)3.1 BSTR内存布局 (6)3.2 StrPtr、VarPtr (7)3.3 示例代码 (7)3.4 转换为Variant (12)3.5 小结 (13)4 结构 (14)4.1 定义 (14)4.2 示例代码 (14)5 数组 (17)5.1 简单数据类型数组 (17)5.2 转换为Variant (18)5.3 结构数组 (19)6 Object (21)7 函数 (21)II第1章VB6.0调用DLL1 VC++编写DLLVB6.0或VBA可以调用DLL里的导出函数。

可以使用VC++编写DLL,供VB6.0调用。

VC++编写DLL时,需要注意以下几点:1.1 使用__stdcallC函数在默认情况下,其调用约定为__cdecl。

为了让VB6.0调用此函数,文件1.2 使用.DEF。

此时,为了简化VB6.0里Test函数的声明,可使用DEF文件,具体如下:12 简单数据类型上表中,除了Decimal、String、Variant之外其它均为简单数据类型。

VB6.0传递简单数据类型给DLL时,分为传值和传址两种方式:2.1 传值(ByVal)2说明:1、VB6.0声明函数时,必须使用ByVal,表示把实参的数值传递给形参;2、因为传递的是数值,所以VC函数里改变形参的数值不会影响到实参。

2.2 传址(ByRef)3说明:1、VB6.0声明函数时,应使用ByRef,表示把实参的地址传递给形参;2、因为传递的是地址,所以VC函数里改变形参的数值将影响到实参。

C通过matlab生成的dll来链接matlab的具体步骤

C通过matlab生成的dll来链接matlab的具体步骤

VC++通过matlab生成的dll来调用matlab函数一matlab生成dll众所周知Matlab的强大运算能力让各种工程软件望而却步,而VC程序的友好界面又让人爱不释手,如果能够让两者的优势结合起来的话,势必能让程序员欢欣鼓舞。

还好MathWorks已经为我们想到了,基本上现在市面上主流的Matlab版本都可以支持VC和Matlab的混合编程。

但是目前网上资料基本上都是基于Matlab 6.0和VC 6.0的,和新版本的实现方法有所不同,因此笔者通过不断的尝试和研究,终于调试通了基于VS2008和Matlab R2011b的混合编程。

1 编写.m函数为了更加直观的说明如何实现混合编程,笔者写了一个简单的程序作为测试。

先在Matlab里面写一个M文件,代码如下:function b = MyFunc(a)b = a.*a;将M文件保存为MyFunc.m,保存在F:/test文件夹中。

然后在Matlab主窗口中将当前文件夹改为F:/test:cd F:/test;2 设置Matlab编译库为了能够让VC调用Matlab程序,我们可以采用将Matlab程序包装成动态链接文件DLL的形式,然后让VC调用动态链接文件,因此在Matlab中,我们需要设置一下Matlab的编译库,在Matlab主窗口中键入如下代码:mbuild –setup(注意‘–’前面是有空格的)然后出现Please choose your compiler for buildingstandalone MATLAB applications:Would you like mbuild to locate installedcompilers [y]/n?键入y后回车,出现Select a compiler:[1] Lcc-win32 C 2.4.1 inD:\PROGRA~1\MATLAB\R2010b\sys\lcc[2] Microsoft Visual C++ 2008 SP1 inD:\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 VisualStudio 9.0Are these correct [y]/n?确定,键入y后回车,出现******************************************************************* *********Warning: Applications/components generated using Microsoft VisualStudio2008 require that the Microsoft Visual Studio 2008 run-timelibraries be available on the computer used fordeployment.To redistribute your applications/components, be sure that thedeployment machine has these run-timelibraries.******************************************************************* *********Trying to update options file: C:\Users\张智宇\AppData\Roaming\MathWorks\MATLAB\R2010b\compopts.batFromtemplate: D:\PROGRA~1\MATLAB\R2010b\bin\win32\ mbuildopts\msvc90compp.batDone . . .如果出现以上说明,则证明Matlab编译器设置成功了。

VB6.0调用Matlab 6.5编程的实现

VB6.0调用Matlab 6.5编程的实现

VB6.0调用Matlab 6.5编程的实现
管亮;冯新泸
【期刊名称】《控制工程》
【年(卷),期】2004(0)S1
【摘要】给出了利用动态连接库(DynamicLinkLibrary即dll),MatrixVB组件和Ac-tiveX技术,实现VisualBasic6.0对Matlab6.5的编程调用的方法并通过编程实践总结出各种实现方法各自的优缺点:利用动态连接库技术的方法实现较为复杂,但其功能强大,应用程序灵活性高;利用MatrixVB组件能够实现两者较为完美的结合,应用程序可以脱离编程环境发布,但是所能利用的函数有限;利用ActiveX技术的方法定制的应用程序需要Matlab操作平台的支持,但其实现简单,操作灵活。

【总页数】4页(P54-56)
【关键词】VB;Matlab;MatrixVB;dll;ActiveX技术
【作者】管亮;冯新泸
【作者单位】解放军后勤工程学院油化系
【正文语种】中文
【中图分类】TP312
【相关文献】
1.MATLAB中调用VC混合编程方法的研究与实现 [J], 宗节保;尹忠;成鸿飞;段柳云;王莹
2.Delphi动态调用Matlab COM组件实现二者混合编程 [J], 吴小丽;丁维明;程力
3.VB调用Matlab制作的COM组件实现二者混合编程 [J], 张赛民;陈灵君
4.VB调用Matlab的COM组件实现二者混合编程 [J], 孟力力;杨其长
5.VB调用Matlab制作的COM组件实现二者混合编程 [J], 张赛民;陈灵君
因版权原因,仅展示原文概要,查看原文内容请购买。

在VB中调用DLL的方法

在VB中调用DLL的方法

在VB中调用DLL的方法方法一:使用Declare语句VB中可以使用Declare语句来声明DLL函数,然后直接调用该函数,具体步骤如下:1.确保DLL文件已经存在,并了解所要调用的DLL函数的名称、参数和返回值类型。

2. 在VB代码的模块级别上,使用Declare语句来声明DLL函数,语法如下:Declare Function functionName Lib "dllFileName" ([参数列表]) As 返回值类型其中,functionName是要调用的DLL函数的名称,dllFileName是DLL文件的名称(带有扩展名),[参数列表]是DLL函数的参数列表,如果没有参数,则可以省略;返回值类型是DLL函数的返回值类型。

3. 在需要调用DLL函数的地方,直接使用函数名进行调用,如:result = functionName([参数])其中,result是接收DLL函数返回值的变量。

4.运行程序,并检查结果是否正确。

方法二:使用COM组件如果DLL文件是使用COM组件进行编写的,可以使用VB的COM互操作性来调用DLL方法,具体步骤如下:1.确保DLL文件已经注册为COM组件,并了解所要调用的DLL方法的名称、参数和返回值类型。

2.在VB项目中添加对DLL文件的引用,方法是在“项目”->“引用”菜单下,选择“添加引用”,然后在“COM”选项卡中找到并选中DLL文件。

3. 创建一个COM对象,可以使用CreateObject或者New关键字,具体语法如下:Dim obj As ObjectSet obj = CreateObject("dllFileName.ClassName")'或者Dim obj As New dllFileName.ClassName其中,dllFileName是DLL文件的名称(不带扩展名),ClassName是DLL内部的类名。

vb调用matlab程序步骤-wrl修改

vb调用matlab程序步骤-wrl修改

先把VB,VC ,matlab都安装好。

例如建立一个 M函数文件,在matlab下调试好你的m文件,如:function Y=myfunction(a,b)Y=a+b;将myfunction.放入E:根目录下。

一.matlab下做com组件,生成dll文件1. 在matlab的command window里面敲入mex –setup (对matlab编译器配置命令下输入,注意有空格)Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n? nSelect a compiler:[1] Borland C++ Compiler (free command line tools) 5.5[2] Borland C++Builder 6.0[3] Borland C++Builder 5.0[4] Compaq Visual Fortran 6.1[5] Compaq Visual Fortran 6.6[6] Intel C++ 9.1 (with Microsoft Visual C++ 2005 linker)[7] Intel Visual Fortran 9.1 (with Microsoft Visual C++ 2005 linker)[8] Intel Visual Fortran 9.0 (with Microsoft Visual C++ 2005 linker)[9] Intel Visual Fortran 9.0 (with Microsoft Visual C++ .NET 2003 linker)[10] Lcc-win32 C 2.4.1[11] Microsoft Visual C++ 6.0[12] Microsoft Visual C++ .NET 2003[13] Microsoft Visual C++ 2005[14] Microsoft Visual C++ 2005 Express Edition[15] Open WATCOM C++ 1.3[0] NoneCompiler: 11Your machine has a Microsoft Visual C++ compiler located atC:\Program Files\Microsoft Visual Studio. Do you want to use this compiler [y]/n? y 由于我VC 的安装目录正在C盘,因此我选择yPlease verify your choices:Compiler: Microsoft Visual C++ 6.0Location: C:\Program Files\Microsoft Visual StudioAre these correct?([y]/n): yTrying to update options file: C:\Documents and Settings\Administrator\Application Data\MathWorks\MATLAB\R2007a\mexopts.batFrom template: C:\PROGRA~1\MA TLAB\R2007a\bin\win32\mexopts\msvc60opts.batDone . . .2.设置matlab编译器,在matlab的command window里面敲入mbuild –setup (对matlab 编译器配置命令下输入,注意有空格)Please choose your compiler for building standalone MATLAB applications:Would you like mbuild to locate installed compilers [y]/n? nSelect a compiler:[1] Borland C++ Compiler (free command line tools) 5.5[2] Borland C++Builder 6.0[3] Borland C++Builder 5.0[4] Lcc-win32 C 2.4.1[5] Microsoft Visual C++ 6.0[6] Microsoft Visual C++ .NET 2003[7] Microsoft Visual C++ 2005[8] Microsoft Visual C++ 2005 Express Edition[0] NoneCompiler: 5Your machine has a Microsoft Visual C++ compiler located atC:\Program Files\Microsoft Visual Studio. Do you want to use this compiler [y]/n? yPlease verify your choices:Compiler: Microsoft Visual C++ 6.0Location: C:\Program Files\Microsoft Visual StudioAre these correct?([y]/n): yTrying to update options file: C:\Documents and Settings\Administrator\ApplicationData\MathWorks\MATLAB\R2007a\compopts.batFrom template: C:\PROGRA~1\MATLAB\R2007a\bin\win32\mbuildopts\msvc60compp.batDone . . .--> "C:\PROGRA~1\MATLAB\R2007a\bin\win32\mwregsvr C:\PROGRA~1\MATLAB\R2007a\bin\win32\mwcomutil.dll"DllRegisterServer in C:\PROGRA~1\MATLAB\R2007a\bin\win32\mwcomutil.dll succeeded--> "C:\PROGRA~1\MATLAB\R2007a\bin\win32\mwregsvr C:\PROGRA~1\MATLAB\R2007a\bin\win32\mwcommgr.dll"DllRegisterServer in C:\PROGRA~1\MATLAB\R2007a\bin\win32\mwcommgr.dll succeeded2. 开一个dos窗口,进入/bin/win32目录下(matlabroot为你机器上matlab安装的路径),例如,我的安装目录在C盘,在dos下进入:C:\Program Files\MATLAB\R2007a\bin\win32 文件夹,输入:regsvr32 mwcomutil.dll,即对mwcomutil.dll进行注册(这个dll是matlab下作的任何com组件都要用到的dll),下面我们在其他编译器下调用时就可以用了。

VBA调用外部DLL文件的高级技巧与应用

VBA调用外部DLL文件的高级技巧与应用

VBA调用外部DLL文件的高级技巧与应用VBA(Visual Basic for Applications)是一种流行的编程语言,广泛用于Microsoft Office套件中的应用程序如Excel、Word和Access。

VBA内置了许多功能,但有时候我们可能需要更高级的功能来实现我们的需求,这时候就可以借助外部DLL文件来扩展VBA的功能。

DLL(动态链接库)文件是包含可供多个程序共享和使用的代码和数据的文件。

VBA可以通过使用Declare语句来引用DLL文件中的函数和过程,从而实现对其功能的调用。

在本文中,我们将探讨一些VBA调用外部DLL文件的高级技巧和应用。

1. 理解DLL文件的结构与导出函数DLL文件包含了一组导出函数,通过这些函数可以实现对DLL提供的功能的调用。

在VBA中,我们需要了解DLL文件的结构以及导出函数的名称、参数和返回值类型。

2. 声明DLL函数在VBA中,通过使用Declare语句可以声明外部DLL函数的名称、参数和返回值类型。

声明外部函数的正确性对于调用DLL文件非常重要。

例如,下面是一个声明ShellExecute函数的示例:Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA"_(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFileAs String, ByVal lpParameters As String, _ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long在这个示例中,我们声明了一个名为ShellExecute的函数,它位于shell32.dll文件中。

该函数用于执行操作系统的某些功能,例如打开文件或运行程序。

VB调用matlab

VB调用matlab

本来,VB与MATLAB混编的时候,我采用了VB+matrixVB的方法,常用的矩阵运算,是够用了的。

但是在处理矩阵的LU三角分解的时候,发现matrixVB的三角分解形为:PA=LU。

而非数值计算方法中的A=LU,想了半天,终于决定用matlab搞一下,发现在MATLAB中默认的LU分解就是matrixVB中的形式,于是狠狠心,自编函数,生成M文件,在MATLAB中终于实现了A=LU的三角分解,为了和VB混编,想到了com方法。

于是在MATLAB命令窗口中输入comtool ,调出combuilder,进行DLL 的生成,结果呢,就这一个小小的念头,折腾了我一天。

才终于成功,下面把我的心得给大家分享一下。

1.环境(操作系统XP ,MATLAB7.0 ,VC++6.0)开始,我并没有装VC++6.0,结果在编译DLL时总是提示找不到编译器,当然了是英文提示,大概有这么一句“Could not find the compiler "cl" on the DOS path。

”后来我装了VS2005,问题同上,最后才装了VC++6.0,并在MATLAB命令窗口中输入mbuild –setup……………….省略多行提示Would you like mbuild to locate installed compilers [y]/n?y(在此输入y)Select a compiler:[1] Lcc C version 2.4 in G:\MATLAB6P5\sys\lcc[2] Microsoft Visual C/C++ version 6.0 in G:\Microsoft VisualStudio[0] NoneCompiler: 2(在此输入2)…………省略多行提示Are these correct?([y]/n): y(在此输入y)然后就可以成功的编译DLL了。

我终于明白,原来这个编译器也是需要和MATLAB的版本匹配的。

在VB开发环境中调用由MATLAB函数转化的DLL

在VB开发环境中调用由MATLAB函数转化的DLL

第25卷总第53期 西北民族大学学报(自然科学版)Vol.25,No.2 2004年6月 Journal of N orthw est U niversity for N ationalities(Natural Science)J une,2004在VB开发环境中调用由MA TLAB函数转化的DLL冯 旭(西北民族大学现代教育技术学院,甘肃兰州730030)[摘 要]VB是一个高效快速的软件开发平台,但在进行数值计算需要编写大量的代码,还需要反复调试以保证其可靠性和稳定性1通过编写DLL,只须少量代码,并且MA TLAB的算法是经过商业化的考验,比较可靠,省去了许多软件维护费用1特别是要编写一些复杂的算法,例如,大型稀疏矩阵、大型线形方程组的解法、微分方程及偏微分方程的解法等等,并在此基础上开发更复杂的算法,该方法的优越性将更加明显1[关键词]MA TLAB;MIDEVA;Matcom4;VB;DLL[中图分类号]TP311 [文献标识码]A [文章编号]1009-2102(2004)02-0065-03Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,适合于科学和工程技术人员使用的计算语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便、界面友好的用户环境1它还包括了ToolBox(工具箱)的各类问题的求解工具,可用来求解特定学科的问题,其基本元素是一个为数不限的复矩阵,并完成了对矩阵运算效率的优化1MA TLAB采用M-语言进行编程,在程序执行过程中对M-文件进行解释,程序结构完整,但不能脱离其环境运行,因此它不能被用于开发商用软件1Visual Basic开发平台提供了开发Windows应用程序最迅速、最简洁的方法,特别在我国VB拥有非常广泛的用户群体1但VB的数值计算功能并不十分强大,往往一个简单的算法就需要很多代码完成,更何况复杂的矩阵运算,因此很多人由于这方面原因而放弃使用VB,造成不必要的资源浪费1为了使VB,最大限度地发挥MA TLAB功能,同时脱离MA TLAB这一庞大的运行环境,本文将介绍MA TLAB函数即M-文件如何转换到DLL以及如何在VB中调用这一类动态库1本文开发环境为MA TLAB6.0、M IDEVA4.5、Matcom4.2、VB6.011 VB与MA TLAB混合编程方式VB与MA TLAB结合在一起编程的方式主要有以下几种:(1)利用组件对象模型即COM规范,自动化Automation协议,通过引擎(Engine),采用客户机/服务器(Client/Server)模式进行通信1实际应用中,VB作为前端客户机通过引擎调用作为Automation服务器端的MA TLAB1但这种方式需要MA TLAB在后台实时运行,不能生成独立运行的应用软件包,因此,在软件开发中很少使用1(2)利用Matlabvbtrix1Matlabvbtrix是Math Tools公司(已被MathWorks收购)专门为VB开发环境提供的一个COM接口,主要包含MA TLAB中常用的500多个函数,但用户也仅限于使用这些函数,不能随意编写[收稿日期]2004-04-15[作者简介]冯旭(1970—),男,工程师,主要研究方向:计算机网络与工程1——56自己的M文件1而Matlab最重要的特点是易于扩展,因此应用范围也受到限制1(3)通过DLL实现二者的结合1用户不仅可以使用Matlabvbtrix所提供的MA TLAB基本函数,还可以在MA TLAB中随意编写自己的M-文件,对于一个从事特定领域的工程师来说,还可方便地构造出专用的函数,从而大大扩展了Matlab的应用范围1然后通过M IDEVA转化为VB可调用的DLL,就可以开发出独立的应用程序12 M-文件转化为DLL本文将一个M-文件转换成一个VB可调用的DLL,如果利用MA TLAB编译器,操作的过程很繁琐,需要很多设置1利用Math Tools公司产品Mideva可以大大简化这一过程1以前也有文章介绍这方面操作,由于当时Mideva版本较低,生成DLL仍需要大量的设置,Mideva4.5大大简化了这些过程1操作步骤如下:启动运行Mideva,点击菜单File/Compile to dll,选择要转化的M-文件1这里要转化的M -文件必须是能够作为函数被其他开发环境调用的M-文件,假设文件名为mymfile.m如果要编译M -文件是没有输入也没有输出的脚本文件,可以现将其编辑成无输入无输出的函数1事先可以在Mideva的环境下进行设置,即在菜单Configuration中配置编译的参数为Debug模式或Release模式1转换完成后,可以看到在对应的Debug或Release目录下,有许多编译生成的文件1在VB开发环境中需要用的文件有3个:mymfile.dll(DLL文件)、mymfile.bas(在VB中声明DLL的模块文件)、mymfile. cls(类模块文件,调用DLL的接口)1为了在VB中能够调用生成的DLL,需要将mymfile.dll拷贝到System或者System32目录下;将mymfile.bas、mymfile.cls拷贝到VB当前工程目录下13 VB中调用DLLVB中调用DLL实际是调用mymfile.cls接口,然后通过该接口实现调用System目录下的DLL,这是Mideva4.5新增加的功能,以前在要调用DLL,必须通过矩阵句柄进行,很不方便1准备工作很简单,只需将mymfile.bas和mymfile.cls文件加入到VB当前工程,为了能应用强大的矩阵运算功能,客户端还需安装Matlabvbtrix14 实例分析该例子旨在说明如何在Mideva中生成动态链接库,以及如何在VB中调用生成的DLL1问题:求两个矩阵的和与差1)先在MA TLAB编写程序mymfile.m%mymfile.m实现矩阵的和与差function[ADD,ODD]=mymfile(A,B);ADD=A+B;ODD=A-B;2)用Mideva将mymfile.m转化成mymfile.dll,同时生成VB需要的文件mymfile.bas和mymfile. cls3)将mymfile.bas和mymfile.cls加入到VB工程中;并且在VB工程中引入Matlabvbtrix,过程为点击菜单Project,选择Reference,在Reference对话框中复选Mmatrix,O K14)选择一个窗体,加入一个按钮1为按钮编写单击事件函数为: Private Sub Command1-Click() Dim inputnatrix(0To1),E inputnatrix(0)=ones(2,2) inputnatrix(1)=zeros(2,2) E=mymfile(myinput)——66 E(1).Show E(2).Show End Sub注意:所调用函数自变量数组下标界从0开始,而返回矩阵数组下标从1开始15)调试通过,打包整理,完成一个独立运行的应用软件包15 关于工具箱函数为了在VB中充分利用MA TLAB工具箱诸如自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等的强大功能,在编写含有这些工具箱函数的M-文件时,必须将这些函数完全展开,即将实现这些函数的M-文件拷贝到自己要编写的M-文件中,这样在应用时不至于遇到编译错误1作者成功在VB中调用神经网络工具箱函数,由于篇幅所限,不在此详细说明,大家可以根据自己实际需要参照进行16 小结VB是一个高效快速软件开发平台,但在进行数值计算需要编写大量的代码,还需要反复调试以保证其可靠性和稳定性1通过编写DLL,只须少量代码,并且MA TLAB的算法是经过商业化的考验,比较可靠,省去了许多软件维护费用1特别是要编写一些复杂的算法,例如,大型稀疏矩阵、大型线形方程组的解法、微分方程及偏微分方程的解法等等,以及在此基础上开发更复杂的算法,该方法的优越性将更加明显1但以前提供的类似方法都需要很多设置和烦琐的规定,不易上手,本文介绍的方法是目前VB调用M-文件转化来的DLL最简便的1可以看出这是一种时间、效率上的极好的折衷,它使得你可以将更多的时间放在项目关键问题的思考上,对于广大工程技术人员的开发工作是十分有益的1参考文献:[1]李仁厚,张平.精通MA TLAB-综合辅导与指南[M].西安:西安交通大学出版社,1999.[2]王颖,胡宗军.ActiveX:从Visual Basic6.0调用MA TLAB的实现方法[M].机电工程,19991172-174.[3]How do I call a Compiler generated stand-alone DLL from my Visual Basic application in MA TLAB6.0(R12)www./support/solutions/data/28621.shtm1[4]Steven Holzner.Visual Basic6技术内幕[M].北京:机械工业出版社,1999.C alling a MAT LAB-G enerated Dynamic LinkLibrary in Visu al B asic ProgrammingFENG Xu(Modern Education Technology College Northwest Minorities University,Lanzhou G ansu730030,China)[Abstract]This paper compares the means by which Visual Basic programs call MA TLAB function firstly, then accounts for how to compile a MA TLAB function into a stand-alone DLL and how to call the DLL in VB Programming.The method makes use of the advantages of VB and MA TLAB fully,supplys a power2 ful technical support for the exploitation of application software fasty and effectively.[K ey w ords]MA TLAB;M IDEVA;Matcom;VB;DLL——76。

由MATLAB的m文件生成动态链接库dll的方法说明

由MATLAB的m文件生成动态链接库dll的方法说明

由MATLAB的m文件生成动态链接库dll的方法说明由MATLAB的.m文件生成动态链接库的方法说明李知践1.把MATLAB编译器(MATLAB Complier: mcc)集成到 VC6.0中第一步:在安装MATLAB时,要安装MATLAB编译器(MATLAB Complier)。

第二步:在MATLAB命令提示符>>或者DOS命令框中键入命令:mex –setup进行编译环境选择:VC6.0。

第三步:在MATLAB命令提示符>>或者DOS命令框中键入命令:mbuild –setup进行编译环境选择:VC6.0。

第四步:在MATLAB命令提示符>>键入命令:prefdir显示用户 preference 目录位置。

第五步:在MATLAB命令提示符>>键入命令:mccsavepath然后将MATLAB的work目录中的mccpath文件拷贝到用户preference 目录中。

保存Complier的路径信息。

第六步:如果使用的是Windows98,要在你的config.sys文件中加入一行:shell=c:\ /e:32768 /p第七步:在VC6.0的Tools -> Customize -> Add-ins and Macro 选中MATLAB add-in for Visual Studio。

将会出现MATLAB add-in for Visual Studio 工具栏。

同时MATLAB已在VC6.0的Wizard 中新增了一项:MATLABProject Wizard2.MATLAB Project Wizard 的使用方法第一步:在VC6.0中选取File -> New -> MATLAB Project Wizard 建立一个新项目。

第二步:在MATLAB Project Wizard 中,选择项目的应用类型:共有五种类型可供选择:● C-MEX DLL● M-MEX DLL● Windows Console EXE● Share M-DLL● Simulink C S-Function选择 Share M-DLL 来建立 Windows 动态链接库。

程序中使用MATLAB编译产生的DLL(VC6.0,MATLABR2010b,mw...

程序中使用MATLAB编译产生的DLL(VC6.0,MATLABR2010b,mw...

程序中使用MATLAB编译产生的DLL(VC6.0,MATLABR2010b,mw...最近需要在VC下调用MATLAB的dll,以前没怎么接触过这些,今天特地摸索了一下。

主要借鉴的是taohe兄的这篇帖子:但不同的是我现在用的MATLAB是R2010b,而VC是6.0,两个产品时间间隔达10多年之久。

taohe兄的实验环境是vs2005,MATLAB 2007b两个产品时间间隔还是比较接近的。

之前按照taohe兄帖子里的步骤实现,发现总是无法成功,出现N多各种奇怪错误,譬如:error C2065: 'mclInitializeApplication_proxy' : undeclared identifier 之类的奇怪错误提示(后来才知道这是2008a以后,Mathworks公司对mclmcrrt.h 和mclmcr.h头文件做了修改,要求mclmcr.h必须include在mclmcrrt.h之后。

)现将操作步骤写下:1、编写测试m函数,这个不变,即如下:1.function [y,z] = myadd2(a, b)2.% dummy function, just to demonstrate the idea3.y = a+b;4.z = a+2*b;5.end复制代码2、运行mbuild -setup设置好编译器后(我选的是vc6.0的编译器,没用MATLAB自带的),利用1.mcc -W cpplib:libmyadd2 -T link:lib myadd2.m -C复制代码生成需要的libmyadd2.dll,libmyadd2.h,libmyadd2.lib,libmyadd2.ctf文件。

(注意,R2010b下,mcc -W cpplib:libmyadd2 -T link:lib myadd2.m不再生成libmyadd2.ctf文件,需加-C选项)3、VC下新建控制台程序,步骤如下:file>new,选择Win32 Console Application,右侧project name 填写1.testmyadd2_r2010b复制代码,点击OK。

DLL在Visual Basic程序调用MATLAB库函数中的应用

DLL在Visual Basic程序调用MATLAB库函数中的应用

DLL在Visual Basic程序调用MATLAB库函数中的应用李小文;屠宇;梁慧冰
【期刊名称】《网络新媒体技术》
【年(卷),期】2002(023)004
【摘要】本文通过动态连接库技术,把MATLAB6.0的计算功能和Visual Basic 5.0(6.0)的数据可视化功能紧密的结合在一起,使利用Visual Basic开发出来的应用程序具有MATLAB的强大功能,从而提高了程序的使用性.
【总页数】2页(P255-封三)
【作者】李小文;屠宇;梁慧冰
【作者单位】广东工业大学自动化学院,广州,510090;广东工业大学自动化学院,广州,510090;广东工业大学自动化学院,广州,510090
【正文语种】中文
【中图分类】TP31
【相关文献】
1.Visual C++调用MATLAB的方法及其在精确故障定位综合软件中的应用 [J], 龚庆武;廖文瑶;吴夙
2.Matlab环境下调用通用DLL的方法及应用 [J], 胡进;姚纯;苏敏
3.在PowerBuilder中调用Visual C++编制的DLL [J], 张恒博;包书哲
4.在Visual Basic程序中调用Fortran动态链接库的方法 [J], 鲜飞军;杨合
5.DLL在Visual Basic程序中的应用 [J], 夏致晰;朱贵良
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

环境:win7 64位,matlab2010b,Vb6.0
一、设置环境变量
右键计算机——属性——高级系统设置——环境变量,在用户变量和系统变量中均添加如下路径:路径名为path 值为”C:\Program Files\MATLAB\R2010b\bin\win64”(matlab安装路径),重启计算机。

二、编写m文件,注意以function开头
三、在matlab中设置编译环境
1.在matlab命令窗口中输入mex –setup,选择n,然后在弹出的众多编译器中选择一个,最好选择VC++系列(在进行这一步时,现在电脑上安装VC的编译器,如VC++6.0、Visual Studio,注意要安装英文版),接下来一直选择y,直至看见Done……,证明这一步成功了;
2.接下来输入么build –setup,接下来步骤与1相似,直至看见Done……。

四、进行编译,生成dll文件
1.在matlab窗口中输入deploytool,在弹出的窗口中,name随便填,location选择默认即可,Target选择倒数第二项:Generic COM Component,单击OK;
2.选择Add class,填写class name,单击Add files,选择所需编译的m文件,然后单击
build按钮,等待编译结束,这是会看到生成的文件夹中含
distrib这个文件夹,所需的dll文件即在里面。

五、注册dll
开一个dos窗口(在开始里输入运行即可),在dos窗口中输入:cd/d <matlabroot>/runtime/win64,回车,接着输入mwregsvr mwcomutil.dll,即对mwcomutil.dll 进行注册(这个dll是matlab下作的任何com组件都要用到的dll)。

六、在vb6.0中调用生成的dll文件
1.打开vb6.0,点击工程——引用——浏览,找到放置dll文件处,选择,点击确定;
2.vb6.0命令行处应写:
Dim myplot As plot.plot1
Set myplot = New plot.plot1
……
Call myplot.plot1(str, strname, xx5, yy2, y)
(说明:其中myplot为自己取的名字,plot为matlab编译dll文件时的class name,plot1为源文件m文件的名字)。

相关文档
最新文档