http://qs321.pair.com?node_id=656666


in reply to functions with optional arguments in Windows DLLs

I've never heard of "optional" arguments to a C routine. A variable number as with int printf( char *t, ... ), but not optional.

If you're going to access a vararg function using Win32::API, you would need to do something hinky like create one API mapping for each number of args you are likely to use and then call the appropriate variant:

use Win32::API; $function2 = Win32::API->new( 'mydll', 'sum_integers', 'II', 'I', ); $function3 = Win32::API->new( 'mydll', 'sum_integers', 'III', 'I', ); $function4 = Win32::API->new( 'mydll', 'sum_integers', 'IIII', 'I', ); $function5 = Win32::API->new( 'mydll', 'sum_integers', 'IIIII', 'I', ); $function6 = Win32::API->new( 'mydll', 'sum_integers', 'IIIIII', 'I', );

Not pretty, but it ought to at least work.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.