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/

Attachment: pgp9GyvWGzneL.pgp
Description: PGP signature

Reply via email to