To suppress warnings from my thiscall wrapped stuff, I came up with this solution, playing around a little with #define's: #ifdef __i386__ /* thiscall functions are i386-specific */ #ifdef __GNUC__ /* GCC erroneously warns that the newly wrapped function * isn't used, lets help it out of it's thinking */ #define SUPPRESS_NOTUSED __attribute__((used)) #else #define SUPPRESS_NOTUSED #endif /* __GNUC__ */ #define WRAP_THISCALL(type, func, parm) \ extern type func parm; \ __ASM_GLOBAL_FUNC( func, \ "popl %eax\n\t" \ "pushl %ecx\n\t" \ "pushl %eax\n\t" \ "jmp " __ASM_NAME("__wrapped_" #func) ); \ SUPPRESS_NOTUSED static type __wrapped_ ## func parm #else #define WRAP_THISCALL(functype, function, param) \ functype function param #endif Declaration of function is now like this: WRAP_THISCALL(HRESULT __stdcall, fnTextSrv_TxSendMessage, (ITextServices *iface, UINT msg, WPARAM wparam, LPARAM lparam, LRESULT* plresult)) { .... } In the vtable I can now just use the function names as I declared them n the wrap. Lets hope julliard forgives me. Maarten