LoadRunner如何调用外部函数

使用 VuGen 时,可以调用在外部 DLL 中定义的函数。通过从脚本调用外部函
数,可以降低脚本的内存使用量以及总体运行时间。
要调用外部函数,需要加载定义了该函数的 DLL。
可以用下列方法加载 DLL:
  本地 — 用于一个脚本,使用 lr_load_dll 函数。
  全局 — 用于所有脚本,方法是向 vugen.dat 文件中添加语句

加载 DLL — 本地
  使用 lr_load_dll 函数可以在 Vuser 脚本中加载 DLL。DLL 加载成功之后,可以
调用 DLL 中定义的任何函数,而无需在脚本中对其进行声明。
要调用 DLL 中定义的函数,请执行下列操作:
 使用 lr_load_dll 函数在脚本的开头加载 DLL。将语句放在 vuser_init 部分的开
头。lr_load_dll 将替换 ci_load_dll 函数。
请使用以下语法:
lr_load_dll(library_name);
注意,在 UNIX 平台中, DLL 被称为共享库。该库的扩展名取决于平台。
 在脚本的适当位置调用 DLL 中定义的函数。
 在下例中,创建表 Test_1 之后,调用了在 orac1.dll 中定义的 insert_vals 函数。

int LR_FUNC Actions(LR_PARAM p)
{
lr_load_dll("orac1.dll");
lrd_stmt(Csr1, "create table Test_1 (name char(15), id integer)\n", -1,
1 , 1 , 0);

lrd_exec(Csr1, 0, 0, 0, 0, 0);

insert_vals();
lrd_stmt(Csr1, "select * from Test_1\n", -1, 1 , 1 ,
lrd_bind_col(Csr1, 1, &NAME_D11, 0, 0);
lrd_bind_col(Csr1, 2, &ID_D12, 0, 0);
lrd_exec(Csr1, 0, 0, 0, 0, 0);
lrd_fetch(Csr1, -4, 15, 0, PrintRow14, 0);

注意: 您可以为 DLL 指定完整路径。如果不指定路径, lr_load_library 将使用
Windows 平台上的 C++ 函数 LoadLibrary 所使用的标准序列来搜索 DLL。在
UNIX 平台上,可以设置 LD_LIBRARY_PATH 环境变量(或平台上与其等效的
变量)。lr_load_dll 函数使用与 dlopen 相同的搜索规则。有关详细信息,请参
阅 dlopen 或与其等效的主页。

加载 DLL — 全局
可以全局加载 DLL,使其函数能够用于所有 Vuser 脚本。DLL 加载成功之后,
可以调用 DLL 中定义的任何函数,而无需在脚本中对其进行声明。
要调用 DLL 中定义的函数,请执行下列操作:
向 mdrv.dat 文件(位于应用程序的 dat 目录)的相应部分中添加要加载的 DLL
列表。
请使用以下语法:
PLATFORM_DLLS=my_dll1.dll, my_dll2.dll,
用您的特定平台替换单词 PLATFORM。有关平台的列表,请参阅 mdrv.dat 文件
的开始部分

例如,要在 NT 平台上为 Winsocket Vuser 加载 DLL,请向 mdrv.dat 文件中添
加下列语句:

[WinSock]
ExtPriorityType=protocol
WINNT_EXT_LIBS=wsrun32.dll
WIN95_EXT_LIBS=wsrun32.dll
LINUX_EXT_LIBS=liblrs.so
SOLARIS_EXT_LIBS=liblrs.so
HPUX_EXT_LIBS=liblrs.sl
AIX_EXT_LIBS=liblrs.so
LibCfgFunc=winsock_exten_conf
UtilityExt=lrun_api
ExtMessageQueue=0
ExtCmdLineOverwrite=-WinInet No
ExtCmdLineConc=-UsingWinInet No
WINNT_DLLS=user_dll1.dll, user_dll2.dll, ...
在脚本的适当位置调用 DLL 中定义的函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值