Thomas,

I think the second script is failing because you are not actually giving any
C++ code
to Inline::C++.

If you put your code either __DATA__ or __END__, you have to use

use Inline  CPP => DATA

This is what tells Inline::C++ to get the code from __DATA__ or __END__


For the first script, run nm on the library that actually defines the
constructor for Cccm_srdfaIpc
and see if the signatures match exactly. What is the prototype for that
constructor?


Cheers,

Parick



----- Original Message -----
From: "tobin, thomas" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, February 20, 2002 12:08 PM
Subject: nm finds the symbol, but perl does not...is the silence in here
deafening, or is it just me?


> Hi,
> If I am in the wrong forum for this kind of thing, or am not posting the
> correct information, please let me know.
> I am very new to this.
> We have two little perl scripts, which are trying to use Config to load
> libraries.  If we use DATA, along with Config, we
> get an undefined symbol.  Here is the script, followed by the error:
> #!/usr/bin/perl
>
> use Inline  CPP => Config  =>
>                    LIBS =>
> '-L/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl -lutil',
>                    LIBS =>
> '-L/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl -litac',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/include',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_cpp',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl';
>
> use Inline  CPP => DATA =>
>                    LIBS =>
> '-L/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl -lutil',
>                    LIBS =>
> '-L/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl -litac',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/include',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_cpp',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl';
>
> ;
>
> process();
>
>
> __DATA__
> __CPP__
>
> #include "Cccm_srdfaClientNwConfig.h"
> #include <string>
> using namespace std;
> #include <iostream>
> #include <stdlib.h>
> #include <time.h>
> #include "./Cccm_log.h"
> #include "Cccm_srdfaIpc.h"
> extern "C"
> {
> #include "itac_pub.h"
> #include "itac_prot.h"
> }
>
> int  process()
>       {
> Cccm_srdfaIpc *ipc = new Cccm_srdfaIpc(1,2,3);
> Cccm_log log("ccmClientLog.txt");
>         printf("hello world\n");
> log.Status("stat");
> log.Error("this is really not an error.\n");
>         return 1;
>       }
>
> /mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl> rm -Rf _Inline
> /mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl> perl testDATA.pl
> perl: error while loading shared libraries:
> /mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_pe
> rl/_Inline/lib/auto/testDATA_pl_6ff1/testDATA_pl_6ff1.so: undefined
symbol:
> __13Cccm_srdfaIpcUlUsi
>
> But nm has no trouble finding the same symbol which perl could not find:
>
> find _Inline -name "*.so" -print -exec nm -D {} \;
> _Inline/lib/auto/testDATA_pl_6ff1/testDATA_pl_6ff1.so
>          U Error__8Cccm_logPCce
>          U PL_curpad
>          U PL_markstack_ptr
>          U PL_op
>          U PL_stack_base
>          U PL_stack_sp
>          U PL_sv_yes
>          U Perl_croak
>          U Perl_form
>          U Perl_mg_set
>          U Perl_newXS
>          U Perl_sv_2pv
>          U Perl_sv_newmortal
>          U Perl_sv_setiv
> 00001260 W Status__8Cccm_logPCce
> 00000f00 T XS_main_process__FP2cv
>          U _._8Cccm_log
> 0000258c A _DYNAMIC
> 000024f0 A _GLOBAL_OFFSET_TABLE_
>          U __13Cccm_srdfaIpcUlUsi
>          U __8Cccm_logPCc
> 00002634 A __bss_start
>          U __builtin_delete
>          U __builtin_new
>          w __cxa_finalize
>          w __deregister_frame_info
>          w __gmon_start__
>          w __register_frame_info
>          U __rethrow
> 00002634 A _edata
> 0000264c A _end
> 00001290 ? _fini
> 00000b2c ? _init
> 00000fe0 T boot_testDATA_pl_6ff1
>          U perl_get_sv
>          U printf
> 00000df4 T process__Fv
>          U terminate__Fv
>
> Alternately, if we use END instead, the C++ is not recognized:
> #!/usr/bin/perl
>
> use Inline  CPP => Config  =>
>                    LIBS =>
> '-L/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl -lutil',
>                    LIBS =>
> '-L/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl -litac',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/include',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_cpp',
>                    INC =>
> '-I/mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl';
>
>
> process();
>
>
> __END__
> __CPP__
>
> #include <string>
> using namespace std;
> #include <iostream>
> #include <stdlib.h>
> #include <time.h>
> #include "./Cccm_log.h"
> #include "Cccm_srdfaIpc.h"
> extern "C"
> {
> #include "itac_pub.h"
> #include "itac_prot.h"
> }
> Cccm_log *pLog=0;
>
> int  process()
> {
>   Cccm_srdfaIpc *ipc = new Cccm_srdfaIpc(1,2,3);
>   Cccm_log log("ccmClientLog.txt");
>   printf("hello world\n");
>   log.Status("stat");
>   log.Error("this is really not an error.n\n");
>   return 1;
> }
>
> /mnt/view/ttobin_ccm0.2.0/vobs/srdfa/src/ccm/cli_perl> perl  testEND.pl
> Undefined subroutine &main::process called at testEND.pl line 11.
>
> Any clues welcomed.
> 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