今天有人在群里问,想直接把自己的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=, b=;
i = &a;
j = &b;
lr_message("i+j=%d",sum(i,j));
return ;
}
 

6)保存,调试脚本,通过。

Virtual User Script started at : -- ::
Starting action vuser_init.
Web Turbo Replay of LoadRunner 11.0. for Windows R2; build (Feb ::) [MsgId: MMSG-]
Run Mode: HTML [MsgId: MMSG-]
Run-Time Settings file: "C:\test\study\Lr_Call_cCode\\default.cfg" [MsgId: MMSG-]
Ending action vuser_init.
Running Vuser...
Starting iteration .
Starting action Action.
i+j=
Ending action Action.
Ending iteration .
Ending Vuser...
Starting action vuser_end.
Ending action vuser_end.
Vuser Terminated.

=============华丽的分割线==========================================================

2.第二种方法,更直接

直接在action中写代码

Action()
{
int *i, *j;
int a=, b=;
i = &a;
j = &b;
lr_message("i+j=%d",sum(i,j));
return ;
}
/*直接在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平台吧。

想看案例,给个链接。http://www.cnblogs.com/coderzh/archive/2008/04/02/1135118.html

loadrnner添加C语言代码的几种方式的更多相关文章

  1. 使用 JavaScript 的 HTML 页面混合、JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出“点击我进入到百度首页”的超链接

    查看本章节 查看作业目录 需求说明: 使用 JavaScript 的 HTML 页面混合.JavaScript 文件引用和 HTML 代码嵌入 3 种方式在 HTML 页面上打印出"点击我进 ...

  2. java Web 启动时自动执行代码的几种方式

    Web容器启动后执行代码的几种方式,其执行顺序为:4===>5===>1===>2===>3,即指定init-method的Bean开始执行,接着实现spring的Bean后置 ...

  3. springboot项目启动成功后执行一段代码的两种方式

    springboot项目启动成功后执行一段代码的两种方式 实现ApplicationRunner接口 package com.lnjecit.lifecycle; import org.springf ...

  4. 转-Pycharm中运行Python代码的几种方式

    转自:Pycharm中运行Python代码的几种方式 在pycharm中的Python代码运行会出现各种奇葩的问题,比如,密码输入时不显示或没有提示,给我们带来一些麻烦,下面介绍几种代码运行的几种方式 ...

  5. 根据服务端生成的WSDL文件创建客户端支持代码的三种方式

    第一种:使用wsimport是JDK自带的工具,来生成 生成java客户端代码常使用的命令参数说明: 参数 说明 -p 定义客户端生成类的包名称 -s 指定客户端执行类的源文件存放目录 -d 指定客户 ...

  6. extjs组件添加事件监听的三种方式

    extjs对组件添加监听的三种方式  在定义组件的配置时设置 如代码中所示:  Java代码  xtype : 'textarea',  name : 'dataSetField',  labelSe ...

  7. servlet之session添加和移除的两种方式

    Java Session 介绍 一.添加.获取session 1.项目结构 2.jar包 3.web.xml文件 <?xml version="1.0" encoding=& ...

  8. WebKit JavaScript Binding添加新DOM对象的三种方式

    一.基础知识 首先WebKit IDL并非完全遵循Web IDL,只是借鉴使用.WebKit官网提供了一份说明(WebKitIDL),比如Web IDL称"operation”(操作), 而 ...

  9. [笔记]Go语言写文件几种方式性能对比

    Go语言中写文件有多种方式,这里进行如下几种方式的速度对比: 打开文件,写入内容,关闭文件.如此重复多次 打开文件,写入内容,defer 关闭文件.如此重复多次 打开文件,重复多次写入内容,defer ...

随机推荐

  1. case break结构与return的有关要点

    //确认事件 private void cmd_ok_Click(object sender, EventArgs e) { //客户名称是否为空 if (txt_banhao.Text.TrimEn ...

  2. MVC调试时遇到的URL问题

    最近接手一个项目时遇到了点问题,事情是这样的,本人拿到源码准备F5准备试跑看一下,原本是应该打开 http:/localhost/Home/Login,结果程序直接跳到 http://localhos ...

  3. 转载:《TypeScript 中文入门教程》 15、可迭代性

    版权 文章转载自:https://github.com/zhongsp 建议您直接跳转到上面的网址查看最新版本. 可迭代性 当一个对象实现了Symbol.iterator属性时,我们认为它是可迭代的. ...

  4. VBA初试——合并

    今天遇到一个任务,要把excel中的相同行合并:没有找到直接的办法(vlookup大概能做),试了试VBA挺好用 数据结构 第一.二列是描述字段,第二列元素唯一:第三到第八列是标志位 任务 合并描述字 ...

  5. Matlab 之 数据元素访问

    Matlab的含义是矩阵实验室,其特征之一就是数据的向量化操作,借此提升软件运行效率.那么,必然会涉及数据元素的访问.Matlab主要支持下面一些形式的访问: (1)array-inde: A(i) ...

  6. php 实现设计模式之 享元模式

    <?php class Book{ public $title; public $author; public function __construct($title,$author){ $th ...

  7. PHP基本语法和输出语句方式

  8. GJM:Unity导入百度地图SDK [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  9. [转载]C#使用Interlocked进行原子操作

    原文链接:王旭博客 » C# 使用Interlocked进行原子操作 什么是原子操作? 原子(atom)本意是"不能被进一步分割的最小粒子",而原子操作(atomic operat ...

  10. js中constructor和prototype

    在最开始学习js的时候,我们在讲到原型链和构造函数的时候经常会有一个例子 如果我们定义函数如下: function Foo() { /* .. */ } Foo.prototype.bar = fun ...