多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

如何用QTP处理dll中带有枚举类型返回值的函数

更新时间:2022-05-26 09:24:54 作者:多测师 浏览:42

  问题描述:

  我用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处理dll中带有枚举类型返回值的函数

  我在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/

联系电话

17727591462

返回顶部