我用VC写了一个标准DLL文件,然后在VB中引用,为什么在放在system32这个目录下面呢。如何打包给客户使用后,能直接在客户的机器上面注册吗?

解决方案 »

  1.   

    如果不明确指明路径,那么你就必须放到system32下
      

  2.   

    放在exe文件的程序来不行啊。
    我在程序是这样引用的。
    Private Declare Function FromPreGetNextKey8 Lib "A.dll" (ByVal FK As Long, ByVal FN As Long) As Long
    为什么我删除了system32下面的A.dll文件就说找不到文件了呢?
      

  3.   

    如果是在开发(写代码)阶段,一般要放在 system32 目录下,因为vb程序在调试过程中不生成exe的,这样编译器就不知道 你的 a.dll 在哪个地方了。
    一旦你的程序生成了 exe ,那么你的 a.dll 是可以放在跟 exe 同一个文件夹里面的,也可以放在 system32 文件夹里面,或者系统环境变量 %path% 所指定的目录。
      

  4.   

    不是,系统是根据系统变量%PATH%里的路径来决定位置更新环境变量方法:开始->设置->控制面板->系统->高级->环境变量->系统变量一般情况下,system32是放dll,ocx的位置,同样在系统变量%PATH%里,这个路径是肯定会有的,系统寻找相对文件路径的文件,比如"abc.dll",就回在系统变量%PATH%里的所有路径中寻找这个文件,如果找不到,他还会在程序的当前目录下查找,所以你的dll文件必须放在系统变量%PATH%里的某个路径之中,否则你必须用绝对路径!比如"C:\sss\abc.dll"这个文件你必须用全路径调用,不能用"abc.dll"调用。如果系统变量%PATH%里有"C:\sss",你就可以直接用"abc.dll"调用
      

  5.   

    所以dll不是必须放在system32中,只是大家习惯而已
      

  6.   

    DLL的声明如下
    Declare Function publicname Lib "libname" [Alias "alias"] [([[ByVal] variable [As type] [,[ByVal] variable [As type]]...])] As Type 其中"libname"就是所指定的DLL文件名,可给它指定路径
    如果未指定 libname 的路径,Visual Basic 将按照下列顺序查找该文件:  
    1. .exe 文件所在的目录 
    2. 当前目录 
    23. Windows 位系统目录(通常为 \Windows\System) 
    24. Windows 目录(不一定是 \Windows) 
    16. Path 环境变量中的目录  
    所以,只要指定路径,DLL可以放在任何地方
      

  7.   

    完全可以使用相对路径,就像调用普通的API一样,对于楼主的.dll这样就行。Private Declare Function FromPreGetNextKey8 Lib "A.dll" (ByVal FK As Long, ByVal FN As Long) As Long把.dll文件和工程文件放在同一个目录中后,有一点一定要注意,就是打开工程要在资源管理器中直接双击工程文件打开,绝不能先启动VB的IDE,再打开工程,否则就会提示找不到.dll文件。
      

  8.   

    打包的话直接和可执行文件放在同一个目录中或者system32目录中就行了。
    标准dll不用注册。
      

  9.   

    如果要被其他程序引用就应该放到system32(98系统)或system(XP)目录中.
    如果打包程序的话,可以放在程序文件夹内或系统的system32目录中
      

  10.   

    因为系统的环境变量PATH里包含SYSTEM32,放在这个目录下的文件,不管你在哪执行都可以找到!!!
    你也可以把你的程序目录放到PATH环境变量里,这样你的DLL就可以找到了,或者将引用的DLL中包括文件的路径也可以的!!
      

  11.   

    不用放在system32下吧,至少VB不用
      

  12.   

    和系统的环境变量有关,如果你的环境变量只设置了System32目录,那么就必须要放到System32目录下或者在你的VB的EXE文件目录下。
      

  13.   

    dll 是可以放在跟 exe 同一个文件夹里面的,也可以放在 system32 文件夹里面,或者系统环境变量 %path% 所指定的目录。
      

  14.   

    system32是系统文件夹 
      98下面是 SYSTEM 
     应用程序调用.DLL的时候搜索顺序是其中有去  系统文件夹搜得,所以可以放在系统文件夹下.也可以和应用程序放在同一文件夹下.
       搜索顺序是:  1.应用程序.exe所在文件夹
                    2.工程所在文件夹
                    3.系统文件夹
      

  15.   

    不用放在system32下.
    只要注册了就行.