LoadRunner 调用Dll

LoadRunner(LR)里的函数真的少得相当可怜,连简单的一个MD5、Base64加密都没有。

但我们可以通过在C++里把一些加解密写成函数,供LR调用。

DLL函数编写

C++里新建工程Class Library(本人是用VS2005,在VS6貌像是:Win32 Dynamic-Link Library)

创建了一个叫LrLoadDll的工程,在LrLoadDll.cpp里编写以下代码:

#define LRLOADDLL __declspec(dllexport)
extern "C" LRLOADDLL int Sum(int a,int b);
extern "C" LRLOADDLL void GetString(char* out);

LRLOADDLL int Sum(int a,int b)
{
    return a + b;
}
LRLOADDLL void GetString(char* out)
{
    char* showString = "hello world!";
    strcpy(out,showString);
    delete showString;
}

编出一个LrLoadDll.dll 的文件,下面就可以在LR里直接调用了。

LoadRunner调用Dll过程

当创建完LR工程就可以把dll添加进来当前脚本使用了,在脚本区域点右键选择Add Files to Script,弹出对放选择刚刚C++编出来的dll就可以了。

在调用前必须加载dll,你可以放在verser_init里加载,也可以在action里用到的时候加载,这样都可以(个人喜欢前者)。

vuser_init()
{
    lr_load_dll("LrLoadDll.dll");
    return 0;
}

调用:

Action()
{
    char * showString;
    int a = Sum(5,5);
    GetString(showString);
    lr_message("-------%d-------",a);
    lr_message("-------%s-------",showString);
    return 0;
}

输出结果:

-------10-------
-------hello world!-------

这样就OK了!

问题:不知道大家有没看到我这里写得很奇怪,Sum函数可以直接return回来;GetString就不行了,非得要通过strcpy拷贝才可以。

我想应该是字符串return的时候是涉及到指针的传递,所以只能先拷贝一份的方法传回来。请大侠解释一下。

时间: 2024-10-26 02:57:01

LoadRunner 调用Dll的相关文章

LoadRunner 调用Dll完成加密解密

LoadRunner里的函数比较少,没有MD5.Base64加密. 我们可以通过在C++里把一些加解密写成函数,供LR调用. DLL函数编写 C++里新建工程Class Library(此处是用VS2005,在VS6是:Win32 Dynamic-Link Library) 创建了一个叫LrLoadDll的工程,在LrLoadDll.cpp里编写以下代码: #define LRLOADDLL __declspec(dllexport) extern"C" LRLOADDLL int S

LoadRunner 调用dll方法

本文主要介绍简单DLL的编写方法及在LoadRunner中局部调用与全局调用DLL方法. 1.动态链接库的编写 在Visual C++6.0开发环境下,打开FileNewProject选项,可以选择Win32 Dynamic-Link Library建立一个空的DLL工程. DLL必须有一个入口点,这就象C语言MAIN函数一样.在Non-MFC DLL中DllMain是一个缺省的入口函数,你不需要编写自己的DLL入口函数,用这个缺省的入口函数就能使动态链接库被调用时得到正确的初始化.如果应用程序

LoadRunner调用md5方法

LoadRunner调用md5方法 上一篇 / 下一篇  2011-04-29 11:25:12 / 个人分类:Loadrunner 查看( 958 ) / 评论( 0 ) / 评分( 0 / 0 ) 有个项目的请求参数中,有一个参数需要md5加密.在google搜索了些LR调用MD5方法的资料.参考资料实现了参数md5加密.现将方法做下总结: 1.首先将md5算法在C编译器中生成md5.h文件,在Vuser generator中添加这个md5.h文件,然后再global.h中添加#includ

C++ 生成 dll 和调用 dll 的方法实例(转)

1)生成dll 建立两个文件 xxx.h , xxx.cpp xxx.h内容如下: #ifdef BUILD_XXX_DLL#define EXPORT __declspec(dllexport)#else#define EXPORT __declspec(dllimport)#endif extern "C"{EXPORT void example(void);... ...} xxx.cpp内容如下: #define BUILD_XXX_DLL#include "xxx.

?c++ 调用DLL函数,出现错误

Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention. 错误原因

Java 调用 C++ (Java 调用 dll)康哥手把手教你

因为要做点图形处理的项目,需要在Java中调用dll库,所以开发的第一步是研究了一下Java Jni的使用方法.突然发现Android Jni 使用跟这个好像(麻蛋,不就是一样的吗,但是Android中需要使用so动态链接库). 第一步 创建Java工程,命名JniDemo,添加JniDemo.java 第二步 在Java类中添加native方法 /** * @author Baokang */ public class JniDemo{ public native static void se

php调用dll经验小结

最近做一个网站,需要频繁使用远程数据,数据接口已经做好.在做转换的时候遇到了性能上的问题:开始打算用php来实现转换,苦苦查了数天,都没有找到直接操作字节的方法.虽然可以使用 pack() 方法将各个数据压入结构中,但是在解压的时候却不能通过 unpack() 简单的解出来,需要通过 //php code for( $i = 0; $i < $length; $i+=2 ){ $tempstr = $tempstr.chr( hexdec(substr($array["data"

delphi编写与调用DLL(delphi7下测试通过)

http://blog.sina.com.cn/s/blog_4dbbf76f01000anz.html 1 delphi编写DLL 2 下面在delphi中编写一个简单的dll,在该dll中只有一个max函数,返回2个数中的大数(Delphi 5.0) 3 1.New->DLL;取名为DLL_0001,编写代码: 4 library dll_0001; 5 uses 6 SysUtils, 7 Classes; 8 {$R *.RES} 9 function max(x,y:integer):

Windows平台Go调用DLL的坑

最近的项目中,使用了GO来开发一些服务中转程序.业务比较简单,但是有一些业务需要复用原有C++开发的代码.而在WINDOWS,用CGO方式来集成C/C++代码并不是太方便.所以用DLL把C++的代码封装起来,然后提供基本的API来完成复用.在这个过程中遇到了一些问题及解决方法,记录下来,也给遇到类似或者同样问题的人一个借鉴. 如果你还不清楚怎么在GO中调用DLL,可以参考这篇文章<WindowDLLs>. Callback的限制 在WINDOWS下调用一些API时会要求传入回调函数,在C/C+