求助: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., ©zhiqiang, 2010.10.11。请参考右边的相关文章列表。


  1. hoho,谢谢,我以前在matlab central问过,但没什么消息。我再转到stackoverflow上去。

  • 支持使用微薄、人人网和QQ的账户登陆进行评论。由各自网站直接认证,不会泄露你的密码。
  • 登陆后可选择分享评论到所绑定的社交网络,如微薄、人人和QQ空间。
  • 评论提交后无法修改。如需修改,请删除原评论再重新提交。
  • 评论支持LaTeX代码,行内公式请用\(a+b=c\),行间公式请用\[a+b=c\]。公式只支持英文字符。
Loading...
Loading...
Loading...