关于:用VB调用的dll文件只能放在Windows目录中吗?

aleck 2000-05-02 01:44:00
  网友们说得不错,dll文件的确可以放在其它目录下,但现在的问题是:我的程序在不同的机器上可能程序所在的目录就不同,那么我该怎么来声明它呢?(我不能去在Lib后面指定一个唯一的路径)而且不知为什么,在我的机器上如果在Lib后面只给出dll的文件名,则每次调用时系统都会报错:找不到dll文件。似乎VB并不是按照先找程序所在目录,再找系统目录的顺序来的。
  例:Declare Function "aaa" Lib "test.dll" () as long '不行
Declare Function "aaa" Lib "d:\a\test.dll" () as long '行,但不实用

  请各位高手赐教。
...全文
211 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Un1 2000-05-08
  • 打赏
  • 举报
回复
使用LoadLibrary,FreeLibrary, GetProcAddress API和CallAddr函数组合使用,动态调用。另外一个方法就是把你的声明写得比较长,然后在目标机器上安装时用Setup直接修改EXE达到效果。

另外,如果DL是自己的,那你可以把它安装在App目录下,声明时不要带路径,编译以后的程序可以找到它。
aleck 2000-05-05
  • 打赏
  • 举报
回复
各位网友:
  我已经试过了,只要把dll文件放在程序所在目录下,然后将该程序编译成exe文件,再运行,就OK了。尽管在VB环境下会提示找不到该文件,但编译成exe后就没事了,我也不知道为什么,还望赐教。
wulang 2000-05-05
  • 打赏
  • 举报
回复
程序运行时首先在当前目录下寻找所需的DLL文件,如果找不到则在系统路径下寻找。在VB调试环境下,当前目录很可能不是程序所在的目录(一般是VB所在目录),而在系统路径下又没有所需的DLL文件,所以会提示找不到该文件。
你可以在调试时先将文件路径设为绝对路径,在正式编译前再将路径改为相对路径。
S391 2000-05-04
  • 打赏
  • 举报
回复
第一步,将你的dll文件拷贝到任意一个你指定的目录下;
第二步,使用Regsvr32命令注册该dll;
第三步,运行你的程序,就OK了.
mfj 2000-05-02
  • 打赏
  • 举报
回复
把tset.dll及你的执行文件存放在同一目录中,
Declare Function "aaa" lib App.Path & "\test.dll" () as long

7,762

社区成员

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

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