DispHelper is a small library that approaches the COM from plain C using the methods from the Dispatch interface. Practically it uses the same techniques of Visual-BASIC.
The variable number of arguments used in the Invoke method are implemented in C using the variadic functions.
Explanations and (small) doc can be found
here.