my $CreateTable = new Win32::API("myDll.dll","HANDLE myTableCreate()"); if(not defined $CreateTable) { die "Can't import API myTableCreate(): $!\n"; } #Create an empty tables. $aTable = $CreateTable->Call(); use Data::Dumper; $Data::Dumper::Useqq = 1; print Dumper($aTable); print("Empty Table Created.\n"); # pack the table. my $packedaTable = pack('J',$aTable); print Dumper($packedaTable); if(unpack('J',$packedaTable) == $aTable) {print "I know how to pack this table.\n";} else {die "I dont know how to pack this table";} #### $VAR1 = 48120353; Empty Table Created. $VAR1 = "!B\336\2\0\0\0\0"; I know how to pack this table. #### # aTable Path my $pathATable = 'C:/Temp/Requests/testTable.TBL'; # Load the function. my $LoadTableFromFile = new Win32::API("myDll.dll","myTableLoadFromFile", 'PP', 'I'); if(not defined $LoadTableFromFile) { die "Can't import API myTableLoadFromFile(): $!\n"; } my $isLoaded = $LoadTableFromFile->Call($pathATable,$packedaTable); print("Table loaded"); #### #ifdef MYTABLE_EXPORTS # define MYTABLE __declspec(dllexport) #else # define MYTABLE __declspec(dllimport) #endif MYTABLE enum cStatus myTableLoadFromFile(char const* filename, myTable* raw_result);