[ROOT] problem in accessing shared library from within Cint

From: HP Wei (hp@rentec.com)
Date: Tue Feb 25 2003 - 16:03:52 MET


We have a large custom C++ shared library (on Solaris machines)
libbox.so.  [It's not derived from TObject.]
I want to access one particular class (Box) in that library
from within Cint.
I had experience in accessing c library before but have
some problem in this case.
Please advise me of any possible resolutions.

Here is the steps that I took.
---------------------------------
(1) copy all .H files for libbox.so into directory A.

(2) create boxLinkDef.h
    #ifdef __CINT__

    #pragma link off all globals;
    #pragma link off all classes;
    #pragma link off all functions;
    #pragma link off all typedef;

    #pragma link C++ class Box-;

    #endif
    
(3) rootcint boxDict.C -c -p Box.H BoxLinkDef.h

    I am stuck here by some strange errors.  
    Here are some examples.
    
    Error: No symbol ino64_td_ino in current scope    
           FILE:/usr/include/sys/dirent.h LINE:63
           
    Error: No symbol __extension__typedeflonglong_G_llong in current scope  
FILE:/usr/local/gnu/install/gcc/2.9.5.2/lib/gcc-lib/sparc-sun-solaris2.6
/2.95.2/../../../../sparc-sun-solaris2.6/include/_G_config.h LINE:20

   Any idea?   Are these problems caused by those *.H files ?
   
   
Steps I am to take if (3) succeeds :
(4) g++ -O -fPIC -I./  -c -o boxDict.o boxDict.C   
(5) g++ -O -fPIC -I/home/hp/ROOT/include   -c -o myroot.o myroot.C
(6) g++ -O myroot.o boxDict.o -L/place/where/libbox.so/is -lbox .....


THanks,
HP



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:09 MET