51Testing软件测试论坛

标题: 调用外部dll的问题 [打印本页]

作者: sky-vid    时间: 2007-4-26 17:56
标题: 调用外部dll的问题
不能调用外部dll

Extern.Declare micInteger,"Getinfo","D:\Personal\Desktop\VB6DLL\工程1.dll","Getinfo",micInteger,micInteger

msgbox(Extern.Getinfo(5,6))

该DLL文件中内容(作用:返回2个整数的乘积)
Function Getinfo(a As Integer, b As Integer) As Integer
Dim ac As Integer
ac = a * b
Getinfo = ac
End Function


在第一步就出现错误提示信息:

请大家帮看一下

[ 本帖最后由 sky-vid 于 2007-4-26 17:57 编辑 ]
作者: pcl2004_27    时间: 2007-4-27 14:06
调用 vb 开发的dll 首先要研究清楚
DLL文件即动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。

DLL多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。它们向运行于Windows操作系统下的程序提供代码、数据或函数。程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。

DLL的全称是Dynamic Link Library, 中文叫做“动态链接文件”。在Windows操作系统中, DLL对于程序执行是非常重要的, 因为程序在执行的时候, 必须链接到DLL文件, 才能够正确地运行。而有些DLL文件可以被许多程序共用。因此, 程序设计人员可以利用DLL文件, 使程序不至于太过巨大。但是当安装的程序越来越多, DLL文件也就会越来越多, 如果当你删除程序的时候, 没有用的DLL文件没有被删除的话, 久而久之就造成系统的负担了。


开发
VC++、C++ Builder、Delphi都可以编写DLL文件。Visual Basic 5.0以上版本也可以编写一种特殊的DLL,即ActiveX DLL。
记住是特殊的,所以不能像原生dll那样使用,要开发出来是com

所以要如下编写代码

dim a
set a=createproject("工程名字.类名")
我猜测你的是set a=createproject("工程1.class1")



a.getinfo 调用


该DLL文件中内容(作用:返回2个整数的乘积)
Function Getinfo(a As Integer, b As Integer) As Integer
Dim ac As Integer
ac = a * b
Getinfo = ac
End Function
作者: sky-vid    时间: 2007-4-27 15:11
标题: 回复 #2 pcl2004_27 的帖子
非常感谢pcl2004_27

实际上,我用你的方法已经搞定过VB6.0的DLL,现在也明白了为什么
Extern.Declare为什么调用不了这个函数,原来是要COM接口的
另外,有点想不通为什么用.NET编译的DLL用这种方法都搞不定
难到用.NET编译的DLL不能被QTP调用么??
我的QTP是9.0的
sdlkfj4
作者: happy1tian    时间: 2007-4-27 17:59
我看关于qtp调用.net的问题,先等个几个月,高人总会出现的
作者: higkoo    时间: 2007-5-9 21:41
标题: 调用DLL的问题
用VC++写的DLL一般都可以调用成功的,原因问问程序员就知道了。sdlkfj2
作者: sky-vid    时间: 2007-5-24 08:56
标题: 谢谢各位大大
感谢各位的解答 现在俺就用VB6.0 VC++写DLL得了
不去想。net了
实在搞烦了 自己写个测试工具 不用这个QTP了
麻烦死了 ,一堆问题,这也不支持,那也不支持,连现在最流行得.NET都不支持
太没有与时俱进的思想了!
作者: brianq    时间: 2007-5-25 02:33
学习中




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2