Hi, I have just tried this under Perl 5.8.5, and renamed Copy to xCopy, which has compiled cleanly.
Further - I had to change $e->cut to $e->Cut. Cheers, Piers Harding. On Mon, Mar 21, 2005 at 03:36:00PM +0100, Subir Sarkar wrote: > Hi all, > > I'm trying to use a C++ library from Perl using Inline::CPP. The > problems I've found so far > can be reproduced with the simple program below. > > 1. virtual destructor is not supported > 2. The Editor::Copy() method clashes with some other from the Perl > library (handy.h?) > > Thank you for any help. > > - Subir > ----------------------------------------------------------------------------------------------------------------------------------- > use Inline CPP; > > my $e = new Editor; > $e->cut; > > __END__ > __CPP__ > > class Editor { > public: > Editor() {} > ~Editor() {} // Does not seem to support virtual destructor > virtual void Print(); > virtual void Cut(); > virtual void Copy(); // handy.h has another Copy() > virtual void Paste(); > }; > > void Editor::Print() { > cout << "Object (" << this << ")" << endl; > } > void Editor::Cut() { > cout << "Cut text" << endl; > } > void Editor::Copy() { > cout << "Copy text to buffer" << endl; > } > void Editor::Paste() { > cout << "Paste text from buffer" << endl; > } > > pcsarkar [392] perl -w Editor.pl > /usr/bin/perl /usr/lib/perl5/5.8.5/ExtUtils/xsubpp -typemap > /usr/lib/perl5/5.8.5/ExtUtils/typemap -typemap > /home/sarkar/Perl/root_examples/_Inline/build/Editor_pl_b8fe/CPP.map > Editor_pl_b8fe.xs > Editor_pl_b8fe.xsc && mv Editor_pl_b8fe.xsc > Editor_pl_b8fe.c > g++ -c -I/home/sarkar/Perl/root_examples/ -D_REENTRANT -D_GNU_SOURCE > -DTHREADS_HAVE_PIDS -DDEBUGGING -fno-strict-aliasing -pipe > -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 > -I/usr/include/gdbm -O2 -g -pipe -march=i386 -mcpu=i686 > -DVERSION=\"0.00\" -DXS_VERSION=\"0.00\" -fPIC > "-I/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE" Editor_pl_b8fe.c > In file included from /usr/include/c++/3.2.3/backward/iostream.h:31, > from Editor_pl_b8fe.xs:2: > /usr/include/c++/3.2.3/backward/backward_warning.h:32:2: warning: > #warning This file includes at least one deprecated or antiquated > header. Please consider using one of the 32 headers found in section > 17.4.1.2 of the C++ standard. Examples include substituting the <X> > header for the <X.h> header for C++ includes, or <sstream> instead of > the deprecated header <strstream.h>. To disable this warning use > -Wno-deprecated. > Editor_pl_b8fe.xs:22:21: macro "Copy" requires 4 arguments, but only 1 given > Editor_pl_b8fe.xs:22: variable or field `Copy' declared void > Editor_pl_b8fe.xs:22: `Copy' declared as a `virtual' field > Editor_pl_b8fe.xs:32:19: macro "Copy" requires 4 arguments, but only 1 given > Editor_pl_b8fe.xs:32: syntax error before `{' token > Editor_pl_b8fe.c:55: confused by earlier errors, bailing out > make: *** [Editor_pl_b8fe.o] Error 1 > > A problem was encountered while attempting to compile and install your > Inline > CPP code. The command that failed was: > make > out.make 2>&1 > > The build directory was: > /home/sarkar/Perl/root_examples/_Inline/build/Editor_pl_b8fe > > To debug the problem, cd to the build directory, and inspect the output > files. > > at Editor.pl line 0 > INIT failed--call queue aborted. > -- http://www.piersharding.com http://search.cpan.org/~piers/
pgp9GyvWGzneL.pgp
Description: PGP signature