該動態鏈接庫編譯成功后,打開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.anti-gravitydesign.com