#! /usr/bin/perl use Win32::API; # Load the table creator from the dll. # Some info about the API function: # C signature: __declspec(dllimport) myTable myTableCreate(); # typedef # struct myTable { # void* opaque; ///< Opaque pointer to storage # } myTable; $pass = 1; my $CreateTable = new Win32::API("myDll.dll","HANDLE myTableCreate()"); if(not defined $CreateTable) { die "Can't import API myTableCreate(): $!\n"; } $pass = $pass && defined($CreateTable->Call()) == 1; #Create an empty table. if($pass) { $aTable = $CreateTable->Call(); print("Table Created"); } else { die "Cant Create a Table"; } #### my $LoadTableFromFile = new Win32::API("myDll.dll","int myTableLoadFromFile(char* filename, LPHANDLE raw_result)"); if(not defined $LoadTableFromFile) { die "Can't import API HANDLELoadFromFile(): $!\n"; } my $pathTable = 'C:/Temp/Requests/TestTable.TBL'; $pathTable = pack('Z',$pathTable); $pass = 1; $pass = $pass && defined($LoadTableFromFile->Call($pathTable,$aTable)) == 1; if($pass) { my $isLoaded = $LoadTableFromFile->Call($pathTable,$aTable); print("Table loaded"); } else { die "Can't load the table from the file $pathTable"; }