typedef struct myTable { void* opaque; ///< Opaque pointer to storage } myTable; #### __declspec(dllimport) myTable myTableCreate(); __declspec(dllimport) enum myStatus myTableLoadFromFile(char const* filename, MyTable* pointToMyTable); #### Win32::API::Struct->typedef( myTable => qw{PVOID opaque;}); my $CreateTable = new Win32::API("myDll.dll","myTable myTable Create()"); my $LoadTableFromFile = new Win32::API("myDll.dll","int myTableLoadFromFile(char const* filename, LPMyTable pointToMyTable)") #### my $LeftTable = $CreateTable->Call(); my $pathTableLft = 'C:/Temp/Requests/CapBuy.TBL'; my $isLoaded = $LoadTableFromFile->Call($pathTableLeft,$LeftTable); print($isLoaded);