VB调用VB写的ActiveX DLL的问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 13:57:50
用VB调用ActiveX DLL是要用CreateObject()将DLL中的函数调用为对象,这个我试过,并且已经成功调用,但问题是,一旦我将DLL和调用此DLL的应用程序一起移走(如一起移到另一台机子上或别的文件夹内),这样会出错:
运行时错误 '-2147024770 (8007007e)':
Automation 错误

怎么解决这个问题?
一楼的那位同志,您答非所问啊,我当然知道VB不能用Declare声明调用ActiveX DLL,所以一开始我都没有提到Declare声明语句;而且我知道怎么用VB正确调用ActiveX DLL,我的问题是:例如我的一个应用程序在C:\ ,在同一个目录下还有一个ActiveX DLL,在编辑那个应用程序的时候我的确有像一楼的那位同志所说的那样调用那个ActiveX DLL,并且已经成功调用,而当我将那个应用程序和同目录下的那个ActiveX DLL一起转移到D:\时运行出错(相对路径并没有改变啊),出错信息:
运行时错误 '-2147024770 (8007007e)':
Automation 错误

我想我补充的表达应该算得上清楚吧,请告诉我怎么解决这个问题好吗?~~谢谢~~

regsvr32.exe用于注册Windows操作系统的动态链接库和ActiveX控件。
程序调用activex.dll不是直接使用的,而是通过windows的,所以当改变了,dll文件的位置时,需要重新向windows注册dll文件,注册方式如下:

开始菜单-->运行
regsvr32 d:\you.dll

另外,vb的打包程序生成的安装程序,会自动注册程序用到的dll文件.而方便程序的安装,

vb不能用Declare 声明调用ActiveX DLL,只能调用标准dll。应该用CreateObject创建对象,然后调用: 1、引用“F:\1.dll”(ActiveX DLL 工程名假设是“工程1”) 2、标准EXE名称为“工程2”,代码: Private MyObj As Object Private Sub Command1_Click() MyObj.a 15 End Sub Private Sub Form_Load() Set MyObj = CreateObject("工程1.Class1") End Sub Private Sub Form_Unload(Cancel As Integer) Set MyObj = Nothing End Sub