matlab生成com类dll文件出错,求助: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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值