关于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
调用就可以了.能给解析一下吗.谢谢.
...全文
138 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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文件,这是怎么回事啊
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7489

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2004-02-21 02:47
社区公告
暂无公告