我用vb.net 开发的com. 在本机调用没有问题。
但是我把dll放到另一个机器中,然后进行了注册
regasm aa.dll /tlb:aa.tlb
也成功了。
在vb中添加因用也没有问题。
在对象管理器中也能看到。
但是在程序中调用的时候出错。
代码:
dim a as new aa.my
msgbox a.msg
错误为:
实时错误 '-2147024894 (80070002) :
自动化错误
错误的发生在
msgbox a.msg
感觉非常奇怪,因为我的组件没有强名称,所以,以为是目录的问题。便把调用程序和dll拷贝到同一个目录下,按照上面的方式注册,结果还是一样的不行。
最后发现,在注册的时候需要指定一个参数。CodeBase
代码如下:
regasm northsnow.dll /tlb:northsnow.tlb /codebase
放到vbs中的代码就是:
set ws=createobject("wscript.shell")
ws.run "regasm northsnow.dll /tlb:northsnow.tlb /codebase"
也就是说,如果要注册的.net程序集没有强名称,则在用regasm注册的时候须指定 CodeBase.