有人在群里问,想直接把自己的C语言代码让lr调用,该怎么搞。
  这东西说来简单,只是对Loadrunner这工具不熟悉可能才会有这种问题吧。个人理解,一般有三种方法吧,废话不多,直接干货。
  1.直接引用
  1)写一个c代码,直接保存为c文件,代码如下。文件为sum.c
  int sum(int num1,int num2)
  {
  retun num1+num2;
  }
  2)打开Loadrunner 新建一个空白http协议脚本,保存为Lr_Call_cCode
  3)打开该脚本的文件夹,找到“globals.h”文件,在全局变量中添加以下内容,保存。
#ifndef _GLOBALS_H
#define _GLOBALS_H
//--------------------------------------------------------------------
// Include Files
#include "lrun.h"
#include "web_api.h"
#include "lrw_custom_body.h"
#include "sum.c"  //此行为添加内容
//--------------------------------------------------------------------
// Global Variables
#endif // _GLOBALS_H
  4)将文件"sum.c"拷贝到脚本“Lr_Call_cCode”根目录中
  5)编辑action脚本如下:
  Action()
  {
  int *i, *j;
  int a=50, b=50;
  i = &a;
  j = &b;
  lr_message("i+j=%d",sum(i,j));
  return 0;
  }
  6)保存,调试脚本,通过。
Virtual User Script started at : 2016-03-28 09:13:52
Starting action vuser_init.
Web Turbo Replay of LoadRunner 11.0.0 for Windows 2008 R2; build 9238 (Feb  1 2011 02:48:36)      [MsgId: MMSG-27143]
Run Mode: HTML      [MsgId: MMSG-26000]
Run-Time Settings file: "C: eststudyLr_Call_cCode\default.cfg"      [MsgId: MMSG-27141]
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Action.
i+j=100
Ending action Action.
Ending iteration 1.
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.
  =============华丽的分割线==========================================================
  2.第二种方法,更直接
  直接在action中写代码
Action()
{
int *i, *j;
int a=50, b=50;
i = &a;
j = &b;
lr_message("i+j=%d",sum(i,j));
return 0;
}
/*直接在action函数外部写c代码*/
int sum(int num1,int num2)
{
retun num1+num2;
}
  保存脚本,回放,结果同1.
  3.通过VC++使用标准C语言编写sum.dll库
  通过Loadrunner调用,官方文档说明:
int lr_load_dll( const char *library_name );
note:library_name  The name of a DLL (Windows) or shared object (UNIX).
The lr_load_dll function loads a DLL (Windows) or shared object (UNIX) allowing you to call an external function when replaying using the
C interpreter. Once you load the DLL, you can call any function defined in the DLL, without having to declare it.
You can specify a full path for the DLL.
On Windows platforms, if you do not specify a path, lr_load_library searches for the DLL using the standard sequence used by the C++ function, LoadLibrary .
On UNIX platforms, you can set the LD_LIBRARY_PATH environment variable (or the platform equivalent). The lr_load_dll function uses the same search
rules as dlopen. For more information, see the man pages for dlopen or its equivalent.
  dll动态库编写使用标准c++函数,加载标准的WindowsLoadLibrary.Linux平台类似,不过大部分人用估计都是在windows平台吧。