求助:Matlab如何支持VB制作的COM DLL

作者:

这里放两个在实际工作中遇到的问题,还没找到解决的方法,向广大网友求助。

Matlab 如何调用自定义的 COM DLL 的类?

我之前用 visual basic 6.0 制作了一个 COM DLL ,里面有几个类,还有几个模块函数。这个 DLL 被 Excel 调用没有任何问题。但我希望能在 Matlab 里面也直接调用它,没有成功。

按照帮助文件,此时需要用 actxserver 建立类实例(当然在使用前已经用 regsvr32 注册了 dll 文件,即在 Matlab 中运行'!regsvr32 testdll.dll'),假设 dll 的工程名为 testdll ,里面含有类 testclass ,我已经用下面代码生成一个 testfun 实例:

testclass= actxserver('testdll.testclass')

那么是否可以正常使用 testclass 呢? It depends ,有些函数成员可以用,有些则不行,或者说我还没搞清楚如何用。

比如 Matlab 无法识别 VB 的可选参数。比如 testclass 定义了一个成员函数 testfun(a, optional b),那么在 Matlab 里面调用 testclass.testfun(1)是可行的(但计算结果可能不如预期,因为 b 被默认初始化为 0 ,即使你在函数的定义中重新定义了 b ),而 testclass.testfun(1, 2)则会报错。

Matlab 如何调用 COM DLL 中的函数?

这个 DLL 是别的程序自带的(比如 WIND 自带的 WDF.dll ), Excel 下可正常使用,也知道它的内置函数的 VB 原型。但没办法用 loadlibrary 调用它内置的函数。

在网上搜到只言片语,说只需要为 DLL 建立一个相应的 C 语言的 h 文件即可。但 VB 的数据类型和 C 完全不一样,比如 VB 中原型为 function testfun(p1 as Date, p2 As String, optional p3) as Long 的函数,其对应的 h 文件头该怎么写呢?

Q. E. D.

类似文章:
编程 » Matlab
在写 Matlab 程序时,函数的命名方式让人头疼,很难保证刚写的一个函数名在很久以前被用过,成为隐藏的一颗炸弹。
编程 » Matlab
Matlab 在启动时会自动运行脚本 startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
编程 » Matlab
第一步, which函数可用来获取 Matlab 函数的全路径(包含路径和文件名)。
编程 » Matlab
读者来信:
编程 » Matlab
写了一个统计代码量的函数,函数已 上传到 Matlab Central File Exchange 下载地址 ,使用方法:
Matlab 的 database 工具箱只支持 ODBC 数据库连接,在使用之前需要先设置 ODBC 数据源。之前在 Excel 里用的是 ADODB ,使用 ADODB 的好处是无需设置 ODBC 源,似乎效率也要高一些(但我一直没弄懂 ADODB 是什么东西,所以效率这东西我也说不清)。
投资 » 凯利判据
凯利判据( 英文 wikipedia )是一种人们在面对不确定事物时的选择标准,更准确地说,凯利判据是 效应函数 为「log 函数」的投资者(或赌徒)的决策方式。下面直接用一个例子来说明: