Call functions from external DLLs
You can call functions that are defined in external DLLs. By calling external functions from your script, you can reduce the memory footprint of your script and the overall runtime.
Load a DLL locally
You can use the lr_load_dll function to load a DLL into a single Vuser script. Once the DLL is loaded, you can call any function defined within the DLL without having to declare it in your script.
To load a DLL locally:
-
In a C Vuser script, add an lr_load_dll function to load the DLL at the beginning of your script. Place the statement at the beginning of the vuser_init section. lr_load_dll replaces the ci_load_dll function.
-
Call the function defined in the DLL in the appropriate place within your script.
In the following example, the insert_vals function, defined in orac1.dll, is called, after the creation of the Test_1 table.
Example: 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 /*Deferred*/, 1 /*Dflt Ora Ver*/, 0); lrd_exec(Csr1, 0, 0, 0, 0, 0);
/* Call the insert_vals function to insert values into the table. */
insert_vals();
lrd_stmt(Csr1, "select * from Test_1\n", -1, 1 /*Deferred*/, 1 /*Dflt Ora Ver*/, 0); 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); ...
Use the following syntax:
lr_load_dll( library_name);
Note that for Linux platforms, DLLs are known as shared libraries. The extension of the libraries is platform dependent.
Note: You can specify a full path for the DLL. If you do not specify a path, lr_load_library searches for the DLL using the standard sequence used by the C++ function, LoadLibrary on Windows platforms. On Linux platforms you can set the LD_LIBRARY_PATH environment variable (or the platform equivalent). The lr_load_dll function uses the same search rules as dlopen. For more information, see the Unix help 'man' page for dlopen.
Load a DLL globally
You can load a DLL globally, to make its functions available to all your Vuser scripts, by adding statements to the vugen.dat file.
Once the DLL is loaded, you can call any function defined within the DLL, without having to declare it in your script.
To globally load DLLs:
-
Add a list of the DLLs you want to load to the appropriate section of the mdrv.dat file, located in your application's dat folder.
Use the following syntax:
PLATFORM_DLLS=my_dll1.dll, my_dll2.dll, ...
replacing the word PLATFORM with your specific platform. For a list of platforms, see the beginning section of the mdrv.dat file.
For example, to load DLLs for Winsock Vusers on an NT platform, include the following section in the mdrv.dat file:
Example:
[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, ...
-
Call the function defined in the DLL in the appropriate place within your script.
See also: