in reply to perlembed problems

You appear to have 2 problems. First you need to check that your Enmac::Transaction module is properly installed. As a binary module it needs to be comiled for both 5.6 and 5.8 as these are not bin compat. perl(5.8) Makefile.PL where the version of perl you use to run the Makefile.PL determines which perl is used to do the install. Now check the version of perl you get (should be 5.8.x) and then run your module E::T module off the command line:

$ perl -v This is perl, v5.6.2 built for i686-linux # should be 5.8.x for you [snip] $ perl -MSocket -e 'print $Socket::VERSION, $/'; 1.72 $ perl -MEnmac::Transaction -e 'print $Socket::VERSION, $/'; Can't locate Enmac/Transaction.pm in @INC (@INC contains: /usr/local/l +ib/perl5/5.6.2/i686-linux /usr/local/lib/perl5/5.6.2 /usr/local/lib/p +erl5/site_perl/5.6.2/i686-linux /usr/local/lib/perl5/site_perl/5.6.2 +/usr/local/lib/perl5/site_perl .). BEGIN failed--compilation aborted. $

Now obviously this should work for both on your system. If it does not either your module is not installed for 5.8 (or if as you insist it is actually where it should be it will almost certainly be a permissions issue). Anyway this little test also proves that Socket (which needs Socket.so binary) will load OK under perl. Once you have that sorted you can then look at the embed code.

With your embed widget try loading Socket - does that work or fail? You know it works from the command line. If it does there is no obvious reason why your E::T module won't work.

Oh the dXSUB_SYS is mostly a NOOP unless you are on OS2. Perl has lots of macros - grep is your friend:

[root@devel3 perl-5.8.3]# grep -R "#define dXSUB_SYS" ./* ./dosish.h:#define dXSUB_SYS ./epoc/epocish.h:#define dXSUB_SYS ./mpeix/mpeixish.h:#define dXSUB_SYS ./os2/os2ish.h:#define dXSUB_SYS OS2_XS_init() ./plan9/plan9ish.h:#define dXSUB_SYS ./unixish.h:#define dXSUB_SYS ./vms/vmsish.h:#define dXSUB_SYS [root@devel3 perl-5.8.3]#

cheers

tachyon

Replies are listed 'Best First'.
Re^2: perlembed problems
by cassidyc (Sexton) on Nov 15, 2004 at 11:03 UTC
    hmmm... getting there slowly methinks

    The basic test program now handles E::T without any issues, so now it is down to our original crufty code.

    I'll have to start with our working code and morph it into the non working code to find out what's wrong. sigh... long day

    Thanks anyway

    CJC

Re^2: perlembed problems
by cassidyc (Sexton) on Nov 15, 2004 at 14:09 UTC
    aha, Problem solved... it would appear that our build environment was broken.

    Our makefile for aix didn`t have

    perl -MExtUtils::Embed -e ldopts
    for defining the LDFLAGs needed at build time, indeed it was some other mad concotion that had some but not all of the appropriate libraries. I had been building my test program outwith our build and only discovered it when I dropped it into place to see what would happen

    Thanks for your help, now I'm off to slap some co-workers

    CJC (who will take no pleasure in dishing out the punishment ;)