LoadRunner 調用Dll
阿新 • • 發佈:2017-05-05
fine fin sum函數 mic gets extern efi library style
LoadRunner(LR)裏的函數真的少得相當可憐,連簡單的一個MD5、Base64加密都沒有。
但我們可以通過在C++裏把一些加解密寫成函數,供LR調用。
DLL函數編寫
C++裏新建工程Class Library(本人是用VS2005,在VS6貌像是:Win32 Dynamic-Link Library)
創建了一個叫LrLoadDll的工程,在LrLoadDll.cpp裏編寫以下代碼:
#define LRLOADDLL __declspec(dllexport) extern "C" LRLOADDLL int Sum(int a,int b); extern "C" LRLOADDLL voidGetString(char* out); LRLOADDLL int Sum(int a,int b) { return a + b; } LRLOADDLL void GetString(char* out) { char* showString = "hello world!"; strcpy(out,showString); delete showString; }
編出一個LrLoadDll.dll 的文件,下面就可以在LR裏直接調用了。
LoadRunner調用Dll過程
當創建完LR工程就可以把dll添加進來當前腳本使用了,在腳本區域點右鍵選擇Add Files to Script,彈出對放選擇剛剛C++編出來的dll就可以了。
在調用前必須加載dll,你可以放在verser_init裏加載,也可以在action裏用到的時候加載,這樣都可以(個人喜歡前者)。
vuser_init() { lr_load_dll("LrLoadDll.dll"); return 0; }
調用:
Action() { char * showString; int a = Sum(5,5); GetString(showString); lr_message("-------%d-------",a); lr_message("-------%s-------",showString);return 0; }
輸出結果:
-------10-------
-------hello world!-------
這樣就OK了!
問題:不知道大家有沒看到我這裏寫得很奇怪,Sum函數可以直接return回來;GetString就不行了,非得要通過strcpy拷貝才可以。
我想應該是字符串return的時候是涉及到指針的傳遞,所以只能先拷貝一份的方法傳回來。請大俠解釋一下。
LoadRunner 調用Dll