在LoadRunner中使用外部的动态链接库有两种方式,一种是通过Param,另外一个就是直接加载并且使用。开始看到网上有人说是用dll中的函数的话,返回不能是字符串,另外就是参数是字符串的也是只读的,不能更改。这样的话,调用dll就真的是限制太大了。不过后来测试发现,不存在上面两个限制的。
通过Param来使用 外部的dll,要设置Param的类型是User Defined Function,设置dll的路径和方法名称,这个方法貌似是不能有参数的。这样就可以使用了。不过对于这样的方式,Param的值是从函数返回的,返回字符串就比较麻烦了。因为返回字符串,除非是常量字符串,否则都要new(malloc)那么没有地方去释放。
另外一种方式就是类似于C的写法了,直接使用lr_load_dll加载动态链接库,然后直接使用动态链接库中的函数,不过这里面要注意一点,如果函数返回值不是int,要事先声明一下,就是要在代码头部写 extern char * yourFunc();就可以使用了。开始在写C的时候,忘了C必须在代码前定义变量,而不能在代码中定义,然后编译出错,看看是写在Action中,以为有什么限制,很是不解,后来是在另外一个同事那里又试的时候,想到的。唉。基础都忘了。另外就是如果需要dll中产生以下数据,传递接收的buffer给函数,在dll外部分配好空间。这很重要,因为dll内部分配的内存在外部是没有办法直接释放的,因为EXE和DLL,也包括多个dll都是由自己独立的堆的!!!
没有评论:
发表评论