thank you for reading my question

解决方案 »

  1.   

    后期绑定。
    通过引用成为前期绑定,好处是速度快、效率高,但确定是一旦类库的版本发生变化就需要重新编译。后期绑定就是在运行时去创建真正的对象,方法一般是使用CreateObject方法,如:
    dim objExl as Object
    set objExl=createobject("Excel.Application")
    这样的好处是基本可以不受所创建的对象的版本的变化的影响(又是比较饶舌的话,今晚上怎么了????可能是酒精的原因),当时效率相对前期绑定低,而且因为是运行时才去创建对象,所以无法使用对象中所定义的常数等,在VB的IDE环境中,也无法自动列出该对象的方法和属性。建议是,调程序时,使用前期绑定,需要Build成Exe的时候,在改成后期绑定。
      

  2.   

    可以调用DLL里的函数,和申明API函数一样,先申明再调用!
      

  3.   

    后期绑定。
    据个例子
    工程名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
      

  4.   

    请问如果我注册了一个myfirst.dll文件
    我该如何写
    直接
    dim obj as object
    set obj=createobject("myfirst")
    还有其他
      

  5.   

    用VB作ActiveX Dll,是分为两个部分:工程名和类名,你所说的myfirst这类的名字只是一部分,应该是比如myfirstproject.myfirstclass。一个工程中可以包含多个类,比如一个叫ClassProject的工程中包含了类A、B、C三个,那么可以用classproject.A、classproject.B等方式去使用,至于A、B、C这些类中哪些可以从工程以外看见,可以通过设置其属性为Public做到。
      

  6.   

    可能是我没说清楚,我是所如果有人用vc或其他某个软件编写了一个myfirst.dll文件,我在vb中如何调用,除去引用以外还有其他方法吗
      

  7.   

    先探测一下:
    引用myfirst.dll,对象浏览器中就会多出一个库,看看那个库中有那些对象,再试写代码如
    dim myObj as new 此时出现的选择列表中看看那些是属于那个库的。就是说能用set xxx as new yyyyy的yyyyy就可以在不引用情况下用
    createobject("类名.yyyyy")来实现。
      

  8.   

    首先你要确定那个myfirst.dll是属于activeX dll还是普通的静态dll,判断的方式很简单,只要用regsvr32去注册一下就可以,如果说注册成功则属于activeX dll,否则一般就是普通的dll。这里你不用担心反复注册这个dll会不会把你的注册表弄乱,对于同一个activex dll,在版本、接口、路径都没有变的时候,windows的注册表里是只有一个注册信息的。
    区分出来以后就好办了,如果是属于activeX dll,那么就用hhjjhjhj(大头)等讲的方式,通过工程的应用去使用这个对象,也可以通过VB IDE环境中的对象浏览器(快捷键F2)去查看这个对象中的类等信息。如果是属于普通的dll,你可以使用VC下的一个工具叫做depandcy(好像是这个名字),它可以查看dll和exe的中所包含的所有的函数名称,有时候虽然看起来凌乱一些,但是还是可以区分出来的(自己试试就知道了)。
      

  9.   

    那种DLL?
    是Win32 DLL,还是ActiveX DLL?如果是Win32 DLL,只需要声明函数就行了
    如果是ActiveX DLL,则必须注册再引用。这与MicroSoft的COM架构有关,它是使用GUID来标示类的,而不是用类名来表示类的
      

  10.   

    楼上的 系统会自动通过 DLL名+类名 去注册表 寻找GUID的
    不需要GUID注册!!
    但是如果你 存在相同的DLL名+类名 就会出现"对象未实例化错误"
      

  11.   

    注册了之后 系统才会查找
    GUID是对象创建时需要的参数