很长时间以来,都认为只能通过绝对路径引用标准dll中的函数。其实,你也可以用相对路径。很简单的,现在就尝试一下吧。
1)绝对路径方法
比如你的dll文件位于c:\testdll\debug\testdll.dll
一般来说,你需要在vb中作如下声明
declare sub mytest lib "c:\testdll\dubug\testdll.dll" (byval x as long)
另外的一个变通方法是把testdll.dll放在windows的系统目录下,这样,你就可以直接引用文件名了。不过,需要把一个文件放到windows系统目录下,很是不爽!
2)相对路径方法
看看我们如何用相对路径,假设你的dll文件位于c:\testdll\debug\testdll.dll,你的vb程序位于目录c:\testdll\vbclient
你可以在vb程序中作如下声明:
declare sub mytest lib "../dubug/testdll.dll" (byval x as long)
如果直接运行你的vb程序,系统会提示错误:找不到../dubug/testdll.dll.
为了使上面的声明其作用,先暂时关闭你的vb工程。然后用一个文本编辑器(notepad,editplus,etc)打开工程文件(就是那个后缀是vbp的家伙),通常vbp文件由几个部分组成,比如我的vbp有两部分:type=exe
reference=*\g{00020430-0000-0000-c000-000000000046}#2.0#0#..\..\..\..\windows\system32\stdole2.tlb#ole automation
form=form1.frm
module=module1; module1.bas
startup="form1"
exename32="project1.exe"
command32=""
name="project1"
helpcontextid="0"
compatiblemode="0"
majorver=1
minorver=0
revisionver=0
autoincrementver=0
serversupportfiles=0
versioncompanyname="american standard"
compilationtype=0
optimizationtype=0
favorpentiumpro(tm)=0
codeviewdebuginfo=0
noaliasing=0
boundscheck=0
overflowcheck=0
flpointcheck=0
fdivcheck=0
unroundedfp=0
startmode=0
unattended=0
retained=0
threadperobject=0
maxnumberofthreads=1
[ms transaction server]
autorefresh=1
你要做的就是在第一部分maxnumberofthreads=1后添加一行debugstartupoption=0。这样,vbp文件就会像下面这样:......(前面的都一样,故省略)
threadperobject=0
maxnumberofthreads=1
debugstartupoption=0
[ms transaction server]
autorefresh=1
ok.that's all!!重新用vb开发环境打开你的工程然后运行。奇迹发生了吧!
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器