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]