Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Calling C++ functions from Perl without using xsubpp

by davido (Archbishop)
on Sep 18, 2012 at 21:40 UTC ( #994372=note: print w/ replies, xml ) Need Help??


in reply to Calling C++ functions from Perl without using xsubpp

Inline::CPP does pretty much what you're asking. It doesn't completely absolve you from studying perlguts, but it's a big step in that direction.

use Inline CPP => 'DATA'; my $sum = add( 2, 4 ); print "$sum\n"; __DATA__ __CPP__ #include <iostream> int add( int x, int y ) { return x + y; }

There are C++ constructs that don't map well to Perl. For one thing, your C++ compiler has no idea how Perl intends to call a function, so template-based functions and classes need to be instantiated in a concrete C++ function or class wrapper before being exposed to Perl. But once you get familiar with the large subset of C++ that does map well to Perl, Inline::CPP is pretty fun to use. I've even spent some time verifying its compatibility with the new C++11 standard (much of it "just works" as it should, with a few exceptions in predictable places).

The Inline::CPP documentation (always a work in progress) is improving, and should get you going in the right direction. I also recommend reading Inline, Inline::C, and Inline::C-Cookbook. Lots of reading, I know. But each of those resources gets you closer to being productive in this funky art. The Inline::C-Cookbook, in particular, demonstrates how to manipulate the Perl stack within your C or C++ functions.

Also, the tests found in the Inline::CPP distribution under t/ and grammar/t demonstrate many C++ constructs at work. And Math::Prime::FastSieve is a sort of "proof of concept" and example of using Inline::CPP.

Advanced Perl Programming (2nd Edition) has a chapter that discusses the Inline modules (Inline::C in particular, but much is applicable to Inline::CPP). And Sam Treagar's book, "Writing Perl Modules for CPAN" has a chapter on Inline::C too.

If you find yourself working much with it, feel free to join the inline@perl.org mailing list. See http://lists.perl.org for details.


Dave


Comment on Re: Calling C++ functions from Perl without using xsubpp
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://994372]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (10)
As of 2015-07-29 08:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (262 votes), past polls