关于DLL调用的问题.

zhangqu980371 2004-02-21 02:47:17
我调用一个DLL.格式如下.(GetDiskID.dll放在当前vb工程下面)
Public Declare Function GetDiskID Lib "GetDiskID.dll" (ByVal sid As String) As Long
调用时出错:
"File not found:GetDiskID.dll"
改成绝对路径:
Public Declare Function GetDiskID Lib "C:\debug\GetDiskID\GetDiskID.dll" (ByVal sid As String) As Long
调用就可以了.能给解析一下吗.谢谢.
...全文
188 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
online 2004-08-23
  • 打赏
  • 举报
回复
这种DLL调用方式就是像搂住那样的调用
Public Declare Function GetDiskID Lib "GetDiskID.dll" (ByVal sid As String) As Long

先注册然后引用入工程中使用的方式

然后我们只能这样使用new关键字或者createobject
参考
Dim obj As project_sum.Class1
Private Sub Command1_Click()
Set obj = New project_sum.Class1
MsgBox obj.Sum(2, 3)
End Sub
hongbo163 2004-08-23
  • 打赏
  • 举报
回复
请教一下:

这种DLL调用方式和先注册然后引用入工程中使用的方式
有什么不同
zyl910 2004-08-22
  • 打赏
  • 举报
回复
回复人: flyfeel(图灵) ( ) 信誉:99 2004-02-21 17:30:04Z 得分: 0



这是VB的一个Bug,当你打开两个以上的VB工程时,后打开的VB工程会改变前一个工程的当前搜索路径,编译成exe文件执行,保证exe文件当前目录下有这个DLL就没有这个问题了


============================================================


Windows搜索路径的顺序:
当前目录(也就是你最近打开文件的目录,这就造成flyfeel(图灵)所说的情况)
System目录(WinNT下是System32)
该应用程序exe所在目录(由于你是在VB IDE中的,所以该路径是VB IDE的目录)
%PATH%环境变量定义的目录
cso 2004-08-22
  • 打赏
  • 举报
回复
系统是根据系统变量%PATH%里的路径来决定位置

更新环境变量方法:开始->设置->控制面板->系统->高级->环境变量->系统变量

一般情况下,system32是放dll,ocx的位置,同样在系统变量%PATH%里,这个路径是肯定会有的,系统寻找相对文件路径的文件,比如"abc.dll",就回在系统变量%PATH%里的所有路径中寻找这个文件,如果找不到,他还会在程序的当前目录下查找,所以你的dll文件必须放在系统变量%PATH%里的某个路径之中,否则你必须用绝对路径!

比如"C:\sss\abc.dll"这个文件你必须用全路径调用,不能用"abc.dll"调用。如果系统变量%PATH%里有"C:\sss",你就可以直接用"abc.dll"调用
chmj718 2004-08-21
  • 打赏
  • 举报
回复
lingll 说的对啊,如果是编译运行的时候,DLL要放在VB的安装目录下才能找到.

我借此再问一个问题:
DLL中导出 全局变量 的时候,VB怎么申明调用??
chmj718 2004-05-11
  • 打赏
  • 举报
回复
谢谢
officecn 2004-05-11
  • 打赏
  • 举报
回复
你可以使用APP.path 来设置相对路径,不要用绝对路径.
sutter 2004-05-09
  • 打赏
  • 举报
回复
我遇到奇怪的问题了?
即使使用绝对路径,也提示找不到dll文件,这是怎么回事啊

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧