herseeing 发表于 2009-6-18 13:42:14

在QTP里如何给函数输入字符型参数

我用c++写了一个dll,定义了一个函数:
QTPDLL_API int COMPUTEDLL(int p1,int p2,char op)
{
        switch(op)
        {
                case('+'): return p1+p2; break;
                case('-'): return p1-p2; break;
                case('*'): return p1*p2; break;
                case('/'): return p1/p2; break;
        }
       
}
现在我想在qtp里调用这个函数,如:
extern.COMPUTEDLL(10,20,'+')
由于vbscript不支持char型变量,这个加号参数'+'不知道怎么输入?哪位大虾能指点迷津?谢谢

ziheng198688 发表于 2009-6-18 14:03:26

楼主可以直接传入'+', VBS会自动将它视为char型变量的 have a try

intothestorm 发表于 2009-6-18 14:08:14

Try this

Extern.Declare micInteger, "COMPUTEDLL", "xxx.dll", "", micInteger, micInteger, micChar
Extern.COMPUTEDLL(10,20,"+")

[ 本帖最后由 intothestorm 于 2009-6-18 15:14 编辑 ]

herseeing 发表于 2009-6-18 14:52:52

不行啊,单引号在qtp里是注释符号。不加单引号吧就提示语法错误。郁闷哟!!

intothestorm 发表于 2009-6-18 15:15:41

笔误,应该是双引号。

herseeing 发表于 2009-6-18 15:28:27

问题仍旧没有解决,双引号则提示“invalid procedure call or argument.....”
在线期待高人指点,不甚感激!

intothestorm 发表于 2009-6-18 17:06:15

你有将这个函数导出吗?
在函数的上一行加上extern "C" __declspec(dllexport),然后重新编译。
这个是干嘛用的?——》QTPDLL_API

[ 本帖最后由 intothestorm 于 2009-6-18 17:20 编辑 ]

herseeing 发表于 2009-6-18 17:35:38

当然有导出。其他dll中函数都能调用。这个QTPDLL_API就是导出的宏

fei.ge 发表于 2009-6-18 17:50:19

【由于vbscript不支持char型变量,这个加号参数'+'不知道怎么输入】
<<<vbscript支持char型变量,如:msgbox"+"

欧阳 发表于 2009-6-19 09:29:23

:lol 好像你的函数里的case参数用的是单引号,不知道是不是这个原因。

intothestorm 发表于 2009-6-19 09:48:39

关注,楼主解决了别忘了回来总结一下。
页: [1]
查看完整版本: 在QTP里如何给函数输入字符型参数