1. 程式人生 > >LoadRunner 調用Dll

LoadRunner 調用Dll

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 void
GetString(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