收到一封学员关于用qtp处理dll中带有枚举型返回值函数的问题,这里是给他的一个答复。
问题描述:
我用QTP 调用VC 编写的dll (extern c 编译)
MXDSGC_API MXD_RTN_CODE_E SGC_InitWinsock(void); /*! * This function is used to close windows socket port. * \param * void * \return * Return code by MXD_RTN_CODE_E enumeration. */ |
我在QTP中应该如何调用?
extern.Declare micUInteger ,"SGC_InitWinsock","D:\Share\MA\SiggenControl\sgc.dll","",micVoid |
如果返回值是枚举型,在QTP中用什么返回呢?
回答:关于qtp调用dll返回的是枚举型函数的问题,其实只要把返回值设置成MicInteger类型就可以,我写了一个例子请看下:
在vc中编写了一个带有枚举型返回值函数的dll,lib.h中代码如下:
enum color #ifndef LIB_H |
以上代码纯为了说明问题,vc6中编译通过。
QTP中调用代码:
Extern.Declare micInteger,"getcolor","D:\VC\dll\Debug\dll.dll","getcolor" If iColorResult =1 Then If iColorResult =1 Then |
以上代码在qtp10中调式通过。
这里关键是vbs是无类型的编程语言,所以不能和c语言中的类型进行匹配,如我们会在vb中声明同类型的变量更替它,vb中的调用代码如下:
Private Declare Function getcolor Lib "D:\VC\dll\Debug\dll.dll" () As color Private Enum color Private Sub Command1_Click() |
可以在vb中声明替代枚举型变量,与c中的枚举类型相匹配。
版权声明:原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。 本文出自pcl2004_27的51Testing软件测试博客:http://www.51testing.com/?72