Hi,
I am brand new to both Perl and Inline.pm.  On my first attempt to use
Inline with C++, I am hitting a fatal relocation error with DynaLoader.pm:

Had problems bootstrapping Inline module 'srdfa_nwconfig_stripped_pl_9be4'

Can't load
'/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl/_Inline/lib/auto/srdf
a_nwconfig_stripped_pl_9be4/srdfa
_nwconfig_stripped_pl_9be4.so' for module srdfa_nwconfig_stripped_pl_9be4:
ld.so.1: perl: fatal: relocation error: file
/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl/_Inline/lib/auto/srdfa
_nwconfig_stripped_pl_9be4/srdfa_nwconfig_st
ripped_pl_9be4.so: symbol cerr: referenced symbol not found at 
/msg/spgear/tools/solaris-2.7.msg/perl-5.6.1/lib/5.6.1/sun4-solaris/DynaLoad
er.pm line 206.
        DynaLoader::croak('Can\'t load
\'/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_p...') called at 
/msg/spgear/tools/solaris-2.7.msg/perl-5.6.1/lib/5.6.1/sun4-solaris/DynaLoad
er.pm line 206
        DynaLoader::bootstrap('srdfa_nwconfig_stripped_pl_9be4') called at
(eval 2) line 9
        eval '  package main;
        push @main::ISA, qw(srdfa_nwconfig_stripped_pl_9be4)
          unless $module eq "main";
        local $srdfa_nwconfig_stripped_pl_9be4::VERSION = \'0.00\';

        package srdfa_nwconfig_stripped_pl_9be4;
        push @srdfa_nwconfig_stripped_pl_9be4::ISA, qw(Exporter DynaLoader);
        sub dl_load_flags { 0x00 }
        srdfa_nwconfig_stripped_pl_9be4::->bootstrap;

;' called at
/msg/spgear/tools/solaris-2.7.msg/perl-5.6.1/lib/site_perl/5.6.1/Inline.pm
line 432
        Inline::load('Inline=HASH(0x192f38)') called at
/msg/spgear/tools/solaris-2.7.msg/perl-5.6.1/lib/site_perl/5.6.1
/Inline.pm line 267
        Inline::glue('Inline=HASH(0x192f38)') called at
/msg/spgear/tools/solaris-2.7.msg/perl-5.6.1/lib/site_perl/5.6.1
/Inline.pm line 194
        Inline::init called at (eval 1) line 5
        Inline::INIT() called at (eval 2) line 0
        eval {...} called at (eval 2) line 0


 at srdfa_nwconfig_stripped.pl line 0

The Perl script looks like this:
use Inline CPP=>'DATA';

&ClientNwConfigParseSwitches;
sub srdfaClientNwConfigParseSwitches
{
    while (@ARGV) {

        our $switch1  = shift @ARGV;
        our $switch2  = shift @ARGV;
        our $sourceIP = shift @ARGV;
        our $switch3  = shift @ARGV;
        our $destIP   = shift @ARGV;
    }

    if ( ($switch1 eq "-a") or ($switch1 eq "-c") ) {
         if  ($switch2 eq "-S") {
            if ($switch3 eq "-D") {
                &ClientNwConfig::client_validateInput;
                if (!Cccm_ClientNwConfig::client_validateInput)
                {
                    print "IP address is invalid\n";
                    &ClientNwConfigDisplayUsage;
                    exit 255;
                }
            }
}
__DATA__
__CPP__
#include "Cccm_srdfaClientNwConfig.h"
#include <string>
using namespace std;
#include <iostream>



bool ClientNwConfig::client_validateInput( char *argv[] )
{
    string source = string( argv [2] );
    string dest = string( argv [4] );
    int firstSrcMarker = 0, secondSrcMarker = 0, thirdSrcMarker = 0;
    int subsequentSrcMarker = 0;
    firstSrcMarker      = source.find( "." );
    secondSrcMarker     = source.rfind( "." );
    subsequentSrcMarker = source.rfind( "." );
    thirdSrcMarker      = source.find_last_of( "." );

    if (subsequentSrcMarker != thirdSrcMarker)
    {
        return false;
    }

    firstSrcMarker      = 0;
    secondSrcMarker     = 0;
    subsequentSrcMarker = 0;
    thirdSrcMarker      = 0;

    firstSrcMarker      = dest.find( "." );
    secondSrcMarker     = dest.rfind( "." );
    subsequentSrcMarker = dest.rfind( "." );
    thirdSrcMarker      = dest.find_last_of( "." );

    if (subsequentSrcMarker != thirdSrcMarker)
    {
        return false;
    }

    return true;
}

Any hints and tips appreciated.
        thanks,

Tom Tobin
EMC Corporation
450 Fortune Boulevard, Milford, MA 
Voice:  (508) 346-8387
Pager:  877-950-8337    pager email  [EMAIL PROTECTED]
email:   [EMAIL PROTECTED]


Reply via email to