[Kde-perl] Embedding perl in Qt

Matthew Pressly mpressly at claborn.net
Tue Sep 5 21:03:21 CEST 2006


As an alternative to using qt-perl, is it possible to embed a
perl interpreter (like what's described in the perlembed manpage
in the perl documentation) in a C++ QT3 or QT4 application so 
that perl subroutines and code can be called from the C++ code?
I know this can be done from a non-QT C application, but have
not been able to get it working from C++ with QT3.

Here is what I have tried so far:

With a working main.cpp for the metric conversion utility described
in the QT3 documentation, I added the following two lines that
are needed for an embedded perl interpreter:

  #include <EXTERN.h>
  #include <perl.h>

Compiling this as normal fails because the libraries are not found:

  main.cpp:3:20: EXTERN.h: No such file or directory
  main.cpp:4:18: perl.h: No such file or directory

I tried adding in options produced by this:

  perl -MExtUtils::Embed -e ccopts -e ldopts

as follows:

g++ -c -pipe -O2 -march=i586 -mcpu=i686 -fmessage-length=0 \
  -fPIC -Wall -W -O2 -march=i586 -mcpu=i686 -fmessage-length=0 \
  -fPIC -D_REENTRANT  -DQT_NO_DEBUG -DQT_THREAD_SUPPORT \
  -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/lib/qt3/mkspecs/default \
  -I. -I/usr/include -I/usr/lib/qt3/include -I.ui/ -I. -I.moc/ \
  `perl -MExtUtils::Embed -e ccopts -e ldopts` -o .obj/main.o main.cpp

but that gives the following error:

  g++: cannot specify -o with -c or -S and multiple compilations

which seems to result from the inclusion of:

  /usr/lib/perl5/5.8.1/i586-linux-thread-multi/auto/DynaLoader/DynaLoader.a

that is produced by:

  `perl -MExtUtils::Embed -e ccopts -e ldopts`

Any pointers or documentation links would be greatly appreciated.

-- 
Matthew
mpressly at claborn.net



More information about the Kde-perl mailing list