这一部分讲vb,c#.net下怎么实现调用上一部分我们生成的comtest_1_0.dll(matlab下做的
com组件),记得一定先要对mwcomutil.dll进行注册(怎么注册参看上一部分)
1.vb下实现调用
打开或新建一个vb工程,点project-Reference,在弹出来的窗口中找到comtest 1.0
Type Library,将前面的复选框选上,点击ok,此时便将此com组件添加到工程里面去了,
此时你可以用对象浏览器看到comtest下有个sgltest类,这个类里面有两个方法im_test,
split2rgb,还有个MWFlags成员(这个成员是自动生成的),vb下测试代码如下:
测试im_test方法的代码:
Dim st As sgltest
Set st = New sgltest
Call st.im_test
测试split2rgb方法的代码:
Dim st As sgltest
Set st = New sgltest
Dim h As Variant, w As Variant, r As Variant, g As Variant, b As Variant,
filename As Variant
filename = "c:\\1.jpg"
Call st.split2rgb(5, h, w, r, g, b, filename)
可见matlab下函数的输入输出参数在com组件里全是variant型的变量,测试大获成功,结
果就跟matlab下运行的一摸一样,爽
我再来补充一下,vb,.net中的数组和com中的VARIANT变量的相互转换
vb和.net变量的相互转换也很简单,下面举例简单说一下:
在我们前面的sgltest里面增加一个函数叫y=paratest(x),x,y为输入输出,都为矩阵
1.vb下:
Dim st As sgltest
Set st = New sgltest
Dim x(2) As Variant, y As Variant
x(0) = 3#
x(1) = 5#
x(2) = 6#
Call st.paratest(1, y, x)
y(1,0),y(1,1),y(1,2)就是输出的数组
2..net下:
comtest.sgltestClass st=new comtest.sgltestClass();
object y=null;
object[] x;
x=new Object[3];
x[0]=2.0;
x[1]=3.0;
x[2]=4.0;
pt.para_test(1,ref y,x);
y[0,0],y[0,1],y[0,2]就是输出的数组
【 在 siciliner (fisher) 的大作中提到: 】
: 标 题: Re: 关于com builder一问!
: 发信站: BBS 水木清华站 (Fri May 30 15:28:10 2003), 转信
:
: 没有人帮帮俺么?
:
: 【 在 siciliner (fisher) 的大作中提到: 】
: : 对6.5信有的com builder做了一下测试,发现如果没有调有simulink模型,也就是m文件
: : 里面不包含sim命令,用combuilder建立com组件不会出现问题,但是如果含有sim命令,
: : 就会出错
: : 请教各位,有没有什么好的解决办法,还是combuilder不支持simulink呢
~~~~~~~我想就是这个原因,如下是从matlab
combuilder的帮助中摘下来的
Limitations and Restrictions
In general, limitations and restrictions on the use of MATLAB COM Builder ar
e the same as those for the MATLAB Compiler. See the Limitations and Restric
tions section of the MATLAB Compiler User's Guide for details. Note that alt
hough the Compiler supports some usage of the MATLAB input command, MATLAB C
OM Builder does not support this command at all.
而matlab compiler不支持simulink,所以combuilder也不支持吧