I once asked a question to the xs mailing list (
http://www.mail-archive.com/perl-xs@perl.org/msg02074.html) as to why the 'Perl_report_uninit' function produced an 'undefined reference' error on Windows, but worked fine on Linux. Jan Dubois provided the following:
--- quote ---
"..Perl_report_uninit() is not a public Perl API, so extensions are not
allowed to call it. On Linux this cannot be enforced as all internal symbols are being exported anyways, but on Windows (and AIX) you can only call APIs that are marked as "public" in the embed.fnc file in the core Perl distribution.
In general it is a good idea to check `perldoc perlapi`. If the function isn't listed in there, then you are not allowed to use them in an extension...."
--- end quote ---
(I'm sure I've used functions in an extension that are not listed in perlapi - though the advice offered in Jan's second paragragh is most likely sound advice.)
I suspect that you've come up against a similar issue. In my case, afaict, 'Perl_report_uninit' was simply
not there in libperl58.a (or libperl58.lib, as the case may be) - and I decided that this was going to be much too difficult to work around (especially given that I had no compelling incentive to do so).
Hope this helps. If you have some ideas as to how this difficulty might best be overcome, please share them, as I'd be interested to learn a little more about this.
Cheers,
Rob