``operator bool`` is is for testing whether or not the function was loaded actually. ``if (func) func(args);``

Objectively:
Yours doesn't allow library unloading.
Yours doesn't decrease refcount of the library, but because you declare function pointer as static it's unlikely that we get theoretically possible integer overflow there.
Yours is thread unsafe I think, because visual studio doesn't support magic statics properly yet (we don't use visual studio CTP).
Yours is impossible to debug.

Subjectively:
Yours is not RAII.
I don't like using code generators (preprocessor or not) at all, without rock-solid reasons to. They break too many coding conventions.

Parameter names are nice and all, but it doesn't justify overall design ugliness in my eyes.

Anyway, we'll have to postpone the decision until @Underground78 is back (the middle of the next week). And maybe other people have something to say as well.