CV* (*Perl_newXS)(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename); .... Perl_newXS = (CV* (*)(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename) )dlsym(handle, "Perl_newXS"); #### error: ‘Perl_newXS’ redeclared as different kind of symbol /usr/lib64/perl5/CORE/proto.h:2517:19: note: previous declaration of ‘Perl_newXS’ was here 2517 | PERL_CALLCONV CV* Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename);