如何使用LoadRunner调用外部DLL动态链接库(2)

发表于:2011-11-09来源:未知作者:领测软件测试网采编点击数: 标签:
该动态链接库编译成功后,打开MyDll工程中的de bug 目录,可以看到MyDll.dll、MyDll.lib两个文件。LIB文件中包含DLL文件名和DLL文件中的函数名等,该LIB文件只是

  该动态链接库编译成功后,打开MyDll工程中的debug目录,可以看到MyDll.dll、MyDll.lib两个文件。LIB文件中包含DLL文件名和DLL文件中的函数名等,该LIB文件只是对应该DLL文件的"映像文件",与DLL文件中,LIB文件的长度要小的多,在进行隐式链接DLL时要用到它。读者可能已经注意到在MyDll.h中有关键字"extern C",它可以使其他编程语言访问你编写的DLL中的函数。

  LoadRunner调用动态链接库

  上面完成动态链接库开发后,下面就介绍动态链接库如何被LoadRunner进行调用,其实也是很简单的。在LoadRunner中的DLL调用有局部调用与全局调用,下面介绍局部调用。

  首先把你编译的DLL放在角本路径下面,这里是MyDll.dll,MyDll.lib.然后在Action中使用

  lr_load_dll("MYDll.dll"),此函数可以把DLL加载进来,让你调用DLL里面的函数,而DLL中的运算是编译级的,所以效率极高,代码样例如下:

  #include "lrs.h"

  Action()

  {

  //

  int nRet = 6;

  char srckey[129];

  memset(srckey, 'a', 128);

  lr_message(lr_eval_string(srckey));

  lr_load_dll("MyDLL.dll");

  nRet = desinit(5,8);

  lr_message("比较的结果为%d",nRet);

  return 0;

  }

  运行结果

  比较的结果为8

  全局的动态链接库的调用则需要修改mdrv.dat,路径在LoadRunner的安装目录下面(LoadRunner/dat directory);在里面修改如例:

  [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

  这样你就可以在LR中随意的调用程序员写的API函数,进行一些复杂的数据加密,准备的一些操作,进行复杂的测试。同时如果你觉的有大量高复杂的运算也可以放在DLL中进行封装,以提高效率。

原文转自:http://www.ltesting.net