易截截图软件、单文件、免安装、纯绿色、仅160KB

VB与Matlab混合编程

VB与Matlab混合编程有多种方式,这里讨论Matlab将M文件编译成com组件共VB调用的方式。
Matlab版本:Matlab 7.7. 0.471 R2008b
VB版本:VB 6.0 & VB 2008
首先写好完成某个功能的m文件,比如在m文件中写入如下函数
function [returns,stderr]=GetReturns(prices)
    returns=price2ret(prices)   %求价格序列的对数收益率
    stderr=std(returns)         %求收益率的标准差
end
该函数接受一个价格序列,返回该价格序列的收益率和收益率的标准差。将该函数存储为GetReturns.m。
然后在matlab中运行deploytool打开发布工具,执行菜单File/New Deployment Project菜单打开新建项目对话框,在左侧列表选择MATLAB Builder NE,在右侧列表选择Generic COM Component,然后在下方Name输入框输入项目名称,点OK按钮确定建立项目。
执行Project/Add File菜单,选择刚写好的GetReturns.m文件。如果想让COM组件包含多个函数,可添加多个m文件。
接下来就是编译和打包了。执行Tools/Build菜单,将在工程目录的distrib文件夹下编译生成dll,注册该dll(使用regsvr32命令)即可在VB中加载并使用了。其实编译完成后matlab就自动注册了工程目录的src文件夹下的dll,直接在VB中加载使用即可。
如果要在没有安装matlab的机器上使用该dll,就要进行打包。执行Tools/Packge菜单,matlab会将该dll依赖的component打包成一个projectName_pkg.exe,将该exe拷贝到目标机器执行,会解压出MCRInstaller.exe,MCRRegCOMComponent.exe和_install.bat三个文件,执行批处理文件_install.bat即会安装Matlab Compiler Runtime(MCR),并且注册我们编译的dll。
VB2008和VB6中使用dll的注意事项:
注册dll后就可在VB中像使用其他引用组件一样使用了,只是要注意VB2008和VB6中使用的不同之处。VB2008中调用函数的时,输出参数如果为矩阵(一维或者二维),可以定义一个二维数组传入函数。但在VB6中不能这么调用,如果定义数组传给matlab编译的dll是得不到输出数据的,必须定义为variant变量,注意是变量,不是数组,才能获取matlab要输出的矩阵数据。当然,在VB2008中也可将参数定义为Object类型,同样可以正常获取输出数据。
还有一点,输入参数尽量定义成double型再传入,否则dll运行可能会报错。测试中遇到输入参数直接写10运行报错,而写成10.0就没问题。


相关文档:

VB根据窗口标题获取应用程序完整路径(来自网络)

VB根据窗口标题获取应用程序完整路径(来自网络)
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId A ......

(转)VB中创建可以输出函数的DLL

VB中创建的DLL只是COM组件,无法作为输出函数的DLL。今天从朋友哪里搞到一种可以创建输出函数的DLL的方法,欣喜之余,不敢独享,现在把他介绍给大家。
  VB编译文件实际上采取了两次编译的方法,首先是调用c2.exe产生OBJ文件,然后调用Link.exe连接。如果在link的时候添加EXPORT选项,实际上是可以输出函数的。但是,在V ......

使用VB将Excel导入到Sql中

使用VB把Excel导入到Sql数据库中,其实有几种方法。
下面我介绍的这种方法,较为简单。
其实这种方法的话,是直接使用T-SQL操作的,因此,到了VB里面,直接eccute这个代码就OK了的。
-----------------------------------------------------下面是在T-sql中的语句
if object_id('NewTable') is not null/*判断表NewTabl ......

[VB]获取SYSKEY

很久以前的一个代码了。。。。。那时还沉迷于研究WindowsXP登录密码的计算方法。。。。
先新建一个VB工程,画一个CommandButton,改名为cmdGetSYSKEY,画一个TextBox,改名为txtSYSKEY,然后粘贴下面的代码,运行即可,在WindowsXP SP2 Build 2600 + VB6.0 SP6下测试通过,获得的SYSKEY与Cain&Abel v4.9.6一致。。。。 ......

重拾VB之二,毫秒篇

重拾VB之二,毫秒篇
PMP 关劲松
   
    鬼使神差,09年12月入职的公司仍使用VB开发软件,虽然并非专职开发,但也不得不在事隔4年之后,重新使用VB。
    在vb中如何获得毫秒精度级别的时间?vb的时间函数不支持毫秒,需要利用windows的基本API,编写程序才能获取毫秒级 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号