VB.NET 调用MATLAB的M文件(生成COM控件)

一.版本说明: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)

时间: 2024-11-07 07:04:46

VB.NET 调用MATLAB的M文件(生成COM控件)的相关文章

允许嵌入到PDF,Word文档和其他文件的条形码控件UPC/EAN Barcode Font Advantage Package

IDAutomation的UPC/EAN Barcode Font Advantage Package是一个先进的字体产品,它所用的工具,宏和源代码可以使用一个单一的字体文件来创建UCC-12, UPCA, UPCE, EAN8, EAN13, JAN, ISBN 和Bookland条形码.该字体满足ANSI, ISO和IEC 2000规格说明要求(ISO 15420:2000). 具体功能: 为了创建合适的UPC和EAN条形码类型,打印的字符必须要从UPC/EAN条形码字体数据表上定义的表格上

jquery文件上传控件 Uploadify

(转自 http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html) 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件. 要求使用jquery1.4或以上版本,flash player 9.0.24以上. 有两个版本,一个用flash,一个是html5.html5的需要付费~所以这里只说flash版本的用法. 官网:http://www.uploadify.com/ 控件截图

jquery文件上传控件 Uploadify(转)

原文:http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同时上传,上传进行进度显示,删除已上传文件. 要求使用jquery1.4或以上版本,flash player 9.0.24以上. 有两个版本,一个用flash,一个是html5.html5的需要付费~所以这里只说flash版本的用法. 官网:http://www.uploadify.com/ 控件截图:

文件上传控件-如何上传文件-大文件下载

需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是BJUI前端框架,并没有使用框架本身的文件上传控件,而使用的基于jQuery的Uploadify文件上传组件,在项目使用的jslib项目中找到了BJUI框架集成jQuery Uploadify的部分,这部分代码封装在bjui-all.js文件中, 在bjui-all.js文件中的全局变量定义中有以下

在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件

在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件 引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过"我现在可以通过WebBrowser实现对各种Html元素的操控,唯独无法控制Html的上传控件",出于安全原因,IE没有对上传控件提供操控支持,这使得我们没法像控制其他控件一样用简单的代码进行赋值. 比较实际的解决方案就是模拟操作了,下面我就将演示

Swift - 生成各种控件的工厂类(包含标签,按钮,输入框等)

在iOS开发中,页面里有时会大量的用到一些控件,如果要一个个单独创建再设置样式的话就显得很麻烦.我们可以创建一个生成各种控件的工厂类,这样在需要的时候调用下就可以了. 下面以一个自定义的工厂类为例,其中提供了文本标签,按钮,文本输入框,分段单选控件的生成,效果图如下: 工厂类:ViewFactory.swift 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

ExtJS 中文件上传控件

1 Ext.onReady(function(){ 2 var fileUpload = new Ext.FormPanel({ 3 id:'fileUpload', 4 frame:true, 5 fileUpload:true, 6 items:[{ 7 xtype:'textfield', 8 labelStyle : 'text-align:right;', 9 allowBlank:false, 10 fieldLabel:'选择文件', 11 inputType:'file', 12

如何清空文件上传控件里的选定文件(路径)

我又来扯鸡毛蒜皮了.有名言曰人生短得不够扯鸡毛蒜皮,但我的工作就是由无数的鸡毛蒜皮组成,如之奈何? 今天的鸡毛和蒜皮是:如何清空文件上传控件里的选定文件(路径)? 场景是酱紫的: 有一个上传控件和一个按钮,其中上传控件隐藏.点击按钮,触发上传控件点击事件,于是弹出文件选择对话框:选好文件后,于是触发了上传控件的onchange事件.在这个事件里,将文件上传. 有点装逼,就是隐藏了上传控件.这可能是出于界面简约的考虑.问题是,同一个文件不能连续上传2次,因为路径不变,没有触发onchange事件.

ASP.NET使用文件上传控件上传图片

ASPX代码 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht