当前位置:编程学习 > VB >>

VB调用matlab创建的dll问题!!急求解答

用matlab的comtool创建了一个dll,注册在默认目录(matlab工作目录)下,出现下述错误,后来我重新注册在放程序代码的目录下,还是出现错误,
以下是代码:

Private Sub Command1_Click()

set mboiler = New boilereff.boilereff
Dim boilerloss As Variant
mboiler.cy = Form3.Text1.Text

End Sub

运行时set mboiler = New boilereff.boilereff一行出现

实时错误 -2147024770 (8007007e)自动化错误

--------------------编程问答-------------------- set mboiler = New boilereff --------------------编程问答-------------------- 2楼的兄弟,这样子不行啊,这样子的话类都没有创建成功。。。
错误会更多

呼唤大牛!小弟感激不尽!! --------------------编程问答-------------------- 感觉缺漏什么。
帮顶
--------------------编程问答-------------------- 重新注册了boiler.1.0 type library的组件
代码改为如下:还是不行。。。啊啊啊,求解答

Private mboiler As boiler.boilerclass

Private Sub Command1_Click()
Label9(0).Caption = "排烟温度耗差"
Label10.Caption = "含氧量耗差"
Label11.Caption = "飞灰含碳量耗差"
Set mboiler = New boiler.boilerclass
myboiler.cy = Form3.Text1.Text

End Sub
--------------------编程问答-------------------- 你的这个dll是否对别的dll有依赖?你的机器上面同时有vb和matlab么?

你的不行,系统给出的错误提示是什么?
你在写
Private mboiler As boiler.boilerclass (这个是不是可以自动出来?)

--------------------编程问答--------------------
引用 5 楼 clear_zero 的回复:
你的这个dll是否对别的dll有依赖?你的机器上面同时有vb和matlab么?

你的不行,系统给出的错误提示是什么?
你在写
Private mboiler As boiler.boilerclass (这个是不是可以自动出来?)


你好,我的机器上同时有vb(v6.0)和matlab(v7.1)
错误提示是:实时错误 -2147024770 (8007007e)自动化错误
boiler.boilerclass 这个可以自动出来!

就是运行到Set mboiler = New boiler.boilerclass 这句报错 --------------------编程问答-------------------- 再去仔细研究一下matlab里的dll输出。 --------------------编程问答-------------------- 那你需要到你的boilerclass 内部去看看初始化的时候做了什么。这个错误应该是boilerclass 内部的问题而不在调用上面 --------------------编程问答--------------------
引用 8 楼 clear_zero 的回复:
那你需要到你的boilerclass 内部去看看初始化的时候做了什么。这个错误应该是boilerclass 内部的问题而不在调用上面


如果不用Set mboiler = New boiler.boilerclass ,而用
 Dim mboiler As New boiler.boilerclass 
运行到mboiler.cy = Form3.Text1.Text 这句报错时光标放在语句上,有提示“对象变量或with块变量未设置”

boilerclass 内部(即生成boiler。dll的matlab M文件)应该没有什么问题,是一些很简单的计算式子:
function s=boiler()
global vgkc vgkc pys cy hy oy ny sy wy ay clz qr  o2m o2s pym pys cfhs cfhm co; 
cry=cy-ay*(0.08*clz/(100-clz)+0.93*cfhs/(100-cfhs))/100;
vgkc=0.089*(cry+0.375*sy)+0.265*hy-0.0333*oy;
vgyc=1.866*(cry+0.375*sy)/100+0.79*vgkc+0.8*ny/100;
alphapy=21./(21-o2s);
vgy=vgyc+(alphapy-1)*vgkc;
vh2o=1.24*((9*hy+wy)/100+1.293*alphapy*vgkc*0.01);
pydeltaq2=(vgy*1.38+vh2o*1.51)*(pys-pym)*100/qr;
pydeltanb=pydeltaq2/0.91;
pydeltab=309*pydeltanb;
hydeltaq2=(1.38*vgyc*(pys-30)+1.51*(pys-30)*1.603*vgyc*0.01)*2100*(1./(21-o2s)-1./(21-o2m))/qr;
hydeltanb=hydeltaq2/0.91;
hydeltab=309*hydeltanb;
fhdeltaq4=33727*ay*0.93*(cfhs/(100-cfhs)-cfhm/(100-cfhm))/qr;
fhdeltanb=fhdeltaq4/0.91;
fhdeltab=309*fhdeltanb;
return
end

--------------------编程问答-------------------- Private myboiler As boiler.boilerclass
Private Sub Command1_Click()
Dim myboiler As New boiler.boilerclass
myboiler.cy = Text1.Text
End Sub

另外,调试时,当光标放在Private myboiler As boiler.boilerclass这句中的myboiler时,出现myboiler=nothing
光标放在mboiler.cy = Form3.Text1.Text 语句上,有提示“对象变量或with块变量未设置”
怎么办呀??困扰好久了。。。呼唤高手 --------------------编程问答-------------------- cy定义错误?还是??? --------------------编程问答--------------------
引用 11 楼 boywang 的回复:
cy定义错误?还是???


cy是m文件里面的参数,应该不会定义错误。 --------------------编程问答-------------------- 你在你的class里面给cy设计属性了么?
也就是cy是可读写的属性? --------------------编程问答-------------------- 多半DLL问题,new都通不过 --------------------编程问答--------------------
引用 13 楼 clear_zero 的回复:
你在你的class里面给cy设计属性了么?
也就是cy是可读写的属性?


没设计,仅仅声明了它是一个变量。 --------------------编程问答-------------------- 那就是了,你都没设计属性。vb调用的时候怎么能给cy赋值呢

你需要把cy变成一个可读写的属性,vb才能正常的使用。 --------------------编程问答-------------------- mboiler.cy = Form3.Text1.Text 

没问题吗?
vb里的text是unicode的指针哦。 --------------------编程问答-------------------- LZ你的问题解决了吗?我跟你出现一摸一样的问题,我怀疑是系统问题 --------------------编程问答-------------------- 我也遇到这个问,哪位高手解答一下啊! --------------------编程问答-------------------- dll注册的问题
补充:VB ,  COM/DCOM/COM+
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,