精华内容
下载资源
问答
  • VB调用matlab编写的M文件进行运算

    千次阅读 2018-12-15 15:58:39
    Matlab产生的M文件不能直接在VB调用,可利用mcc将M文件直接编译成.exe文件,然后在VB中声明下面三个API函数,最后使用Shell命令即可实现VBMatlab的无缝集成。 1.用mcc生成独立的外部应用程序。可使用如下两种命令...

    Matlab产生的M文件不能直接在VB中调用,可利用mcc将M文件直接编译成.exe文件,然后在VB中声明下面三个API函数,最后使用Shell命令即可实现VB与Matlab的无缝集成。
    1.用mcc生成独立的外部应用程序。可使用如下两种命令:
    mcc -p file.m 或 mcc -m file.m
    在这里插入图片描述
    2.在VB中声明调用的三个API函数:
    ● Declare Function WaitForSingleObject Lib “kernel32”(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
    ● Declare Function CloseHandle Lib “kernel32”(ByVal hObject As Long) As Long
    ● Declare Function OpenProcess Lib “kernel32”(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long,ByVal dwProcessId As Long) As Long
    注意:在VB中使用API函数时;
    在VB中声明API函数有两种方法:
    如果我们只在某个窗体中使用API函数,我们可以在窗体代码的General部分声明它:
      声明的语法是:
      Private Declare Function …
      Private Declare Sub…
      这里必须采用Private声明,因为这个API函数只能被一个窗体内的程序所调用。
    如果我们的程序有多个窗体构成,而且我们需要在多个窗体中使用同一个API函数,就需要在模块中
    声明了。
      先添加一个模块(如图示),
      在这里插入图片描述
      然后采用如下语法声明:
      Public Declare Function…
      Public Declare Sub…
      Public声明的含义是把API函数作为一个公共函数或过程,在一个工程中的任何位置(包括所有的窗体和模块)都能直接调用它。声明完毕我们就能在程序中使用此API函数了。
      即:
    Private Declare Function WaitForSingleObject Lib “kernel32” (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
    Private Declare Function CloseHandle Lib “kernel32” (ByVal hObject As Long) As Long
    Private Declare Function OpenProcess Lib “kernel32” (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    (如图:
     在这里插入图片描述
    3.操作代码
    Dim lTask As Long, lret As Long, lHandle As Long
    ’执行file.exe文件
    lTask = Shell(“VB20181215.exe”, vbNormalFocus) ""文件路径
    lHandle = OpenProcess(SYNCHRONIZE, False, lTask)
    ’等待进程执行完毕
    lret = WaitForSingleObject(lHandle, INFINITE)
    lret = CloseHandle(lHandle)
    ’ VB2018121.exe文件执行完毕后,继续执行应用程序

    展开全文
  • 一.版本说明:VS2008,MATLAB2010b 二、安装MCRInstaller 在路径C:\Program Files\MATLAB\R2010b\...1. 输入: mbuild –setup 出现以下界面,我选择是[2]自己编译器,不是MATLAB自带。 2.打开下...

    一.版本说明:VS2008MATLAB2010b

    二、安装MCRInstaller

    在路径C:\Program Files\MATLAB\R2010b\toolbox\compiler\deploy\win32

    三、MATLAB命令窗口中配置环境

    1. 输入: mbuild –setup 出现以下界面,我选择的是[2]自己的编译器,不是MATLAB自带的。

    2.打开下图

     

    3.然后弹出以下对话框

    名字自己命,我的叫recognition.选择Generic COM Component。点击 “OK”。MATLAB右边出现以下界面

    点击“Add class”,命名自己的类,我的叫recognition。点击”Add files”添加自己的M文件,我的主程序叫Multimeter1.调用的子程序是lianxu1和vcmubanpipei。。。在下边添加的是我的模板图片,程序用到的不需要改变的图片可以放这里。没有用到图片不用添加。

    然后点击第一个图标,build

    等待2-3分钟,就生成完了,如下图

    到此,,就会在你选择的路径下生成了一个文件夹 recognition打开它

    会有distrib和src两个文件夹。我们要的DLL在distrib里面。

    这就是我要的DLL。。

    如果在已经装上MATLAB的电脑上调用MATLAB的M文件,这个DLL就行了。如果要脱离MATLAB环境,我们需要打包。

    添加 Add MCR ,将MCR打包进来。再点击第二个打包图标。在Build图标的右边。

    打包完成,我的程序打包前的DLL只有2M,打包后有175M了。。。

    刚才的distrib文件夹下多了一个.BAT文件。

    还有一个EXE

    到这里对MATLAB的操作结束。。。。。。。

    DLL注册

    MATLAB生成的DLL,注册之后的DLL才能够被工程引用。

    三、对VB.NET的操作

    1. 添加引用

    添加MWArray.dll的引用,我的MATLAB2010b里面没有,在网上下,或者找更低版本的MATLAB,如MATLAB7.0 里面有的,考到自己电脑里边,然后对它添加引用。

    添加MWComUtil.dll的引用,MATLAB下边有,自己找到,添加。

    添加自己刚才制作的DLL。。我的叫recognition_1_0.dll

    一共添加了3DLL,缺少一个都不行啊!!!

    2 导入命名空间

     

    3 调用DLL的程序

     

    这是我的,第一句:对象化一个实例 dim ** as new 文件名.类名

    第二、三、五、六句:设置函数的输入参数,我的参数有两个,一个是图片img一个是数字angle.

    第四句:对象化输出参数

    第七句:调用MATLABmultimeter函数,参数说明:“1

    代表输出参数的个数;“result“是输出参数,img和angle是输入参数。这样我就可以得到结果了。我是对一张数字图像进行识别的程序,以下是结果。

    重要说明:

    1.。以上这用速度是很慢的,慢的原因是第一句,对象化实例的时候,如果这个函数要多次调用,我们希望程序只做一次实例对象,所以我将这几句放在模块里边:

    程序改为:

    这样第一次调用比较慢,后来速度就很快了。。

    2. 之前调用DLL一直不成功,一直跳出提示框大概说 JVM 的虚拟内存不足,加大电脑虚拟内存也没有用,头痛了四天,最后原因可能是程序里面实例化对象太多,内存暴涨。

    所以在加载窗口的程序中,我添加了好几句回收内存的语句,最后解决了。

    GC.Collect()

    3.如果MATLAB的M文件还需要用到一些图像,文本文件,将这些文件放入.NET工程下的BIN—DEDUG下边就好,这是默认的路径。

    4.对MATLAB的调用生成COM比生成EXE速度更快,首选COM方法吧。

    这是调用EXE的.NET程序,贴贴保留着,myexe.exe是MATLAB生成的EXE,一二三句话就是调用EXE.

    Dim FileName2 As String  '执行MATLAB的EXE文件

    FileName2 = Application.StartupPath & "\myexe.exe"

    System.Diagnostics.Process.Start(FileName2)

    转载于:https://www.cnblogs.com/michelleden/p/5355127.html

    展开全文
  • 请详细给个程序看看!谢谢!
  • VB调用Matlab编写dll

    2020-11-18 11:20:59
    VB调用Matlab编写dll 本文将介绍如何在VB6.0中调用Matlab生成dll中函数 工具/原料 Matlab2010b VB6.0 方法/步骤 首先在Matlab2010b中建立一函数文件,本文命名为add_num: 运行命令:...

     

    VB调用Matlab编写的dll

    本文将介绍如何在VB6.0中调用Matlab生成的dll中的函数

    工具/原料

    • Matlab2010b
    • VB6.0

    方法/步骤

    1. 首先在Matlab2010b中建立一函数文件,本文命名为add_num:

    1. 运行命令:deploytool,新建一工程,“Target”选为“Generic COM Component”

    1. 在deploytool窗口中,添加class,然后添加文件,选刚才创建的my_add.m:

    1. 点击“Build”按钮,即开始编译

    1. 编译成功后,即可看到生成的dll文件

    1. 启动VB6.0,新建一工程,类型为标准EXE,添加一按钮控件:

    1. 添加dll引用:

    1. 双击按钮控件,输入如下代码:

    1. 启动程序,运行结果如图:

     

    展开全文
  • 写一下步骤,主要是回忆前段时间的...(2)在matlab 7.4 中,敲入命令deploytool,然后新建一工程,将所需的m文件加入,生成dll,再将结果打包。(具体可以查看matlab帮助文档);(3)将生成的dll,注册到注册表 如

    写一下步骤,主要是回忆前段时间的成果,错误难免,请谅解!

     

    (1)编辑m文件,将需要输出的结果(包括中间结果和最终结果)都作为函数的输出 如[a,b,c,d]=fun(e,f,g) ;

    (2)在matlab 7.4 中,敲入命令deploytool,然后新建一工程,将所需的m文件加入,生成dll,再将结果打包。(具体可以查看matlab帮助文档);

    (3)将生成的dll,注册到注册表 如:regsvr32 path/**.dll;

    (4)在vb6.0中,选择菜单 工程/引用,将dll勾选上;

    (5)在新建的vb工程中,类似调用类一样调用dll  如:Dim  myfun as Fun       myfun=new Fun.funclass ;

    (6)调用dll中的函数, 如: Call myfun.convert(3,a1,b1,c1,e1,f1,g1) 其中 3 代表 输出值的个数;a1,b1,c1代表输出变量,要定义为Variant类型,然后再进行数据类型转换; e1,f1,g1为输入参数,定义为String、Int类型变量;

    (7)打包发布,注意发布时在目标机器上要安装(2)中的打包文件。

    展开全文
  • 如何VB6.0 调用 MATLAB r2010b 生成DLL ? 我已经用VS 2010 VC++ 2010编译器 生成了MATLAB r2010b M文件的DLL了, MATLAB M文件的内容是 function c=Sum2(a,b) c=a+b; end 而且在VB 引用中加入了这个...
  • VB调用dll应用实例

    2014-05-02 17:31:40
    这个方法是从我的毕业设计中截取的,里面除了详细介绍VB调用dll的步骤和过程外,还包含了把matlab的m文件编译成dll的详细过程。因此,适合VB与matlab混合编程使用。 这种方法是经过我实际验证的,绝对可行。之前也...
  • VBMatlab混合编程

    千次阅读 2010-02-01 09:50:00
    VBMatlab混合编程有多种方式,这里讨论Matlab将M文件编译... 0.471 R2008bVB版本:VB 6.0 & VB 2008 首先写好完成某个功能的m文件,比如在m文件中写入如下函数 function [returns,stderr]=GetReturns(prices) ret
  • 以借用C++编译器将Matlab的M文件转换为可被VisualBasic、Exe-cl以及Dephi调用的DLL(动态 链接库),亦可编译成独立的标准可执行文件,不需装载任何附加产品。本文就M文件到DLL的转换 以及在VB调用这一类DLL两个问题...
  • 1. VC调用Matlab DLL方式 DLL是一个可执行二进制文件。把很多通用功能放在DLL中,可以供各种应用程序调用,这样可以很好减少外部存储空间占有量,并实现代码共享。Matlab也支持将m程序编译成dll,供...
  • 1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用: 这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2) vc的设置请参看精华区x-6-1-4-3-5,通过这种设置可以调用c math library和c++ math ...
  • matlab混合编程向导

    千次阅读 2012-04-09 14:40:12
    1.通过mcc将matlab的m文件转化为cpp,c文件或dll供vc调用:  这方面的实现推荐精华区Zosco和ljw总结的方法(x-6-1-4-3-1和2)  vc的设置请参看精华区x-6-1-4-3-5,通过这种设置可以调用c math library和c++  ...
  • MATLAB混合编程与工程应用.pdf

    热门讨论 2010-05-19 10:32:48
    10.5.2 创建MATLAB Web 应用程序的M 文件222 10.5.3 创建输出文件224 10.6 MATLAB Web Server 应用程序举例226 第11 章 混合编程工程应用实例237 11.1 数字水印概述237 11.2 数字水印常见算法242 11.3 混合编程应用...
  • VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab混合编程实现成组图像边缘的连续提取.pdf VC与MATLAB...
  • 问题:想将.m文件打包成com组件供vb.net调用,但却遇到“找不到C++编译器”的问题 我尝试了网上能找到的各种方法均不成功!最后我总结出以下方法: 首先确保你的matlab和vs都是正确安装的,并且matlab的版本与vs互相...
  • VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab混合编程实现成组图像边缘的连续提取.pdf VC与MATLAB...
  • VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab混合编程实现成组图像边缘的连续提取.pdf VC与MATLAB...
  • VC_调用Matlab的方法.pdf VC下利用串口进行数据通讯的研究.pdf VC与MATLAB混合编程在图像处理中的应用.pdf VC与Matlab混合编程实现图像处理.pdf VC与Matlab混合编程实现成组图像边缘的连续提取.pdf VC与MATLAB...
  • 概述问题:想将.m文件打包成com组件供vb.net调用,但却遇到“找不到C++编译器”的问题我尝试了网上能找到的各种方法均不成功!最后我总结出以下方法:首先确保你的matlab和vs都是正确安装的,并且matlab的版本与vs...
  • 概述问题:想将.m文件打包成com组件供vb.net调用,但却遇到“找不到C++编译器”的问题我尝试了网上能找到的各种方法均不成功!最后我总结出以下方法:首先确保你的matlab和vs都是正确安装的,并且matlab的版本与vs...
  • 1.3 mathtools公司产品介绍 mideva是一款功能强大的M文件编译器,它的设计理念是取代matlab,它可用来编辑m文件以及直接把m文件编译成可执行程序。mideva使用matcom和JIT技术,它在编译m文件为可执行程序方面上表现...
  • 若干源程序资料12.rar

    热门讨论 2012-06-11 22:11:26
    2012-06-11 21:34 803 用MATLAB实现图像锐化程序代码.m 2012-06-11 21:13 31,839 用Visual C++实现排序算法大全.rar 2012-06-11 21:09 27,688 用单片机制作高精度数显计数器.rar 2012-06-11 21:10 9,654 用...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

vb调用matlab的m文件

matlab 订阅