如何用QTP处理dll中带有枚举类型返回值的函数
更新时间:2022-05-26 09:24:54 作者:多测师 浏览:239
问题描述:
我用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
* eturn
* Return code by MXD_RTN_CODE_E enumeration.
*/
我在QTP中应该如何调用?
extern.Declare micUInteger
,"SGC_InitWinsock","D:ShareMASiggenControlsgc.dll","",micVoid
如果返回值是枚举型,在QTP中用什么返回呢?
回答:关于qtp调用dll返回的是枚举型函数的问题,其实只要把返回值设置成MicInteger类型就可以,我写了一个例子请看下:
在vc中编写了一个带有枚举型返回值函数的dll,lib.h中代码如下:
enum color
{red,yellow,blue};
#ifndef LIB_H
#define LIB_H
extern "C" color __declspec(dllexport)getcolor();
#endif
lib.cpp中代码如下
#include "lib.h"
color getcolor()
{
color c_1;
c_1=red;
return c_1;
}
以上代码纯为了说明问题,vc6中编译通过。
QTP中调用代码:
Extern.Declare micInteger,"getcolor","D:VCdllDebugdll.dll","getcolor"
Dim iColorResult
iColorResult=Extern.getcolor()
If iColorResult =0 Then
msgbox "red"
End If
If iColorResult =1 Then
msgbox "yellow"
End If
If iColorResult =1 Then
msgbox "blue"
End If
以上代码在qtp10中调式通过。
这里关键是vbs是无类型的编程语言,所以不能和c语言中的类型进行匹配,如我们会在vb中声明同类型的变量更替它,vb中的调用代码如下:
Private Declare Function getcolor Lib "D:VCdllDebugdll.dll" () As color
Private Enum color
red
yellow
blue
End Enum
Private Sub Command1_Click()
Dim iColorResult As color
iColorResult = GetColor()
MsgBox iColorResult
End Sub
可以在vb中声明替代枚举型变量,与c中的枚举类型相匹配。
以上内容为大家介绍了自动化测试中的如何用QTP处理dll中带有枚举类型返回值的函数,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/
上一篇:对QTP自动化测试框架的一点认识