in reply to Web Browser fails to compile my code

Further to the above, probably the quickest fix is just to grab the Inline generated XS out of /build and use that directly (ie drop Inline out of the equation). All you need to go with the XS is a very short .pm to Dynaload it. h2xs will generated a stub XS example for you. Just paste in the autogenerated inline C XS and the INLINE.h and it should compile and install fine. Then in the scipt just use the module as normal. This will work and is almost certainly a more reliable solution as you have removed an abstraction layer.

  • Comment on Re: Web Browser fails to compile my code

Replies are listed 'Best First'.
Re^2: Web Browser fails to compile my code
by crashtest (Curate) on May 21, 2008 at 20:52 UTC

    Now this is what I was thinking: build a proper XS module instead of using the Inline::C shortcut. No reason to force compilation on the web server process, especially if it doesn't work properly anyway.

    As a general question, I was wondering how Inline::C is used in production applications. My instinct is that Inline::C is more of a helper/get-me-started module, not something to be used in the final shipped application. Seeing how the OP solved the original problem confirms it for me: library and header include paths shouldn't be hard-coded in the Perl code; stuff like that belongs in a build process.

    On the other hand, my impression is that Inline::C is a very popular module. Is it accepted practice to include C code using it? Would I find modules on CPAN that depend on Inline::C?

    We do have some Perl at $work, but mostly just for utility scripts, and we've never had to write any C code. I'm curious what the general accepted practice is in the Perl community.

      You can use Google to "grep" cpan site:cpan.org/src "use Inline C" returns 30 results (click the last button to make Google find the real number, not the estimate). About 1/2 are .pm modules using Inline C, so the answer is not very many.

      h2xs is a powerful tool worth looking into.

      There is a moduleInlineX::XS that converts Inline::C code to XS although I have not tried it. There are also InlineX::C2XS InlineX::CPP2XS for C++