If you place the '*' after the __internal_linkage macro, like this: extern cairo_surface_t __internal_linkage * cairo_function (); I think gcc 3.4 should be happy. -David