|Think about Loose Coupling|
weird XS_unpack_charPtrPtr errorby tlm (Prior)
|on Apr 04, 2009 at 01:43 UTC||Need Help??|
tlm has asked for the
wisdom of the Perl Monks concerning the following question:
I've developed and tested a module that uses Inline::C. It works fine, all the tests pass, etc. But now I need to turn it into a pre-compiled, free-standing loadable module, and this is not going so well.
When I attempt to run the tests using this pre-compiled version, the loading fails with an error about not being able to find the symbol XS_unpack_charPtrPtr.
This makes no sense to me. I do have C functions in my code whose arguments include some of type char**, I even have one that takes char***, but all these functions are statics, unseen by the Perl code; these functions that take char** are called only by other C functions. Therefore I don't see why they should cause this reference to XS_unpack_charPtrPtr. If my reasoning here is incorrect (which is quite likely), please let me know.
I've tried to make a simple example that illustrates the problem, without any luck. The error shows up only when there's a substantial amount of code. (In fact, AFAICT, what I have here is a Heisenbug.)
Therefore, the only thing I can hope for is some general Inline debugging/troubleshooting advice. For starters, I would love to know how to find out which function in my code is causing Inline C to generate a reference to XS_unpack_charPtrPtr.
FWIW, I'm following the instructions given in the Inline docs, under the section "Writing Modules with Inline". This includes modifying Makefile.PL to use Inline::MakeMaker instead of ExtUtils::MakeMaker. The versions of all the modules used are the most current ones from CPAN.
Many thanks in advance!
the lowliest monk