I'm trying to use the Win32::API module to call a simple test case DLL (call it "addValues.dll"). My DLL has a function in it called addValues: extern "C" __declspec(dllexport) double addValues(double a, double b) { double c; c = a + b; cout << a << " " << b << " " << c << endl; return(c); } My perl script to call this looks like: use Win32::API; $num1 = $ARGV[0]; $num2 = $ARGV[1]; $myFunc = Win32::API->new('addValues', 'double addValues(double a, double b)'); $out = $myFunc->Call($num1, $num2); print "$out"; When executing this, perl bombs at the Call line, giving me the "Perl Command Line Interpreter has encountered a problem and needs to close. We are sorry for the inconvenience" message. Note that if I change my dll function to take no arguments (hard coding a and b within the function) and return a double, I have no problems, e.g. $myFunc = Win32::API->new('addValues', 'double addValues()'); $out = $myFunc->Call(); I have also tried the alternative calling syntax: $myFunc = Win32::API->new('addValues', 'addValues', 'DD', 'D') with no success.