后期绑定。 通过引用成为前期绑定,好处是速度快、效率高,但确定是一旦类库的版本发生变化就需要重新编译。后期绑定就是在运行时去创建真正的对象,方法一般是使用CreateObject方法,如: dim objExl as Object set objExl=createobject("Excel.Application") 这样的好处是基本可以不受所创建的对象的版本的变化的影响(又是比较饶舌的话,今晚上怎么了????可能是酒精的原因),当时效率相对前期绑定低,而且因为是运行时才去创建对象,所以无法使用对象中所定义的常数等,在VB的IDE环境中,也无法自动列出该对象的方法和属性。建议是,调程序时,使用前期绑定,需要Build成Exe的时候,在改成后期绑定。
可以调用DLL里的函数,和申明API函数一样,先申明再调用!
后期绑定。 据个例子 工程名project,类名class1 Public Function sum(a As Integer, b As Integer) As Integer sum = a + b End Function 引用Private Sub Command1_Click() Dim obj As Object Set obj = CreateObject("project.Class1") Text1.Text = obj.sum(2, 4)End Sub
请问如果我注册了一个myfirst.dll文件 我该如何写 直接 dim obj as object set obj=createobject("myfirst") 还有其他
先探测一下: 引用myfirst.dll,对象浏览器中就会多出一个库,看看那个库中有那些对象,再试写代码如 dim myObj as new 此时出现的选择列表中看看那些是属于那个库的。就是说能用set xxx as new yyyyy的yyyyy就可以在不引用情况下用 createobject("类名.yyyyy")来实现。
通过引用成为前期绑定,好处是速度快、效率高,但确定是一旦类库的版本发生变化就需要重新编译。后期绑定就是在运行时去创建真正的对象,方法一般是使用CreateObject方法,如:
dim objExl as Object
set objExl=createobject("Excel.Application")
这样的好处是基本可以不受所创建的对象的版本的变化的影响(又是比较饶舌的话,今晚上怎么了????可能是酒精的原因),当时效率相对前期绑定低,而且因为是运行时才去创建对象,所以无法使用对象中所定义的常数等,在VB的IDE环境中,也无法自动列出该对象的方法和属性。建议是,调程序时,使用前期绑定,需要Build成Exe的时候,在改成后期绑定。
据个例子
工程名project,类名class1
Public Function sum(a As Integer, b As Integer) As Integer
sum = a + b
End Function
引用Private Sub Command1_Click()
Dim obj As Object
Set obj = CreateObject("project.Class1")
Text1.Text = obj.sum(2, 4)End Sub
我该如何写
直接
dim obj as object
set obj=createobject("myfirst")
还有其他
引用myfirst.dll,对象浏览器中就会多出一个库,看看那个库中有那些对象,再试写代码如
dim myObj as new 此时出现的选择列表中看看那些是属于那个库的。就是说能用set xxx as new yyyyy的yyyyy就可以在不引用情况下用
createobject("类名.yyyyy")来实现。
区分出来以后就好办了,如果是属于activeX dll,那么就用hhjjhjhj(大头)等讲的方式,通过工程的应用去使用这个对象,也可以通过VB IDE环境中的对象浏览器(快捷键F2)去查看这个对象中的类等信息。如果是属于普通的dll,你可以使用VC下的一个工具叫做depandcy(好像是这个名字),它可以查看dll和exe的中所包含的所有的函数名称,有时候虽然看起来凌乱一些,但是还是可以区分出来的(自己试试就知道了)。
是Win32 DLL,还是ActiveX DLL?如果是Win32 DLL,只需要声明函数就行了
如果是ActiveX DLL,则必须注册再引用。这与MicroSoft的COM架构有关,它是使用GUID来标示类的,而不是用类名来表示类的
不需要GUID注册!!
但是如果你 存在相同的DLL名+类名 就会出现"对象未实例化错误"
GUID是对象创建时需要的参数