RE: [ROOT] How to use third party's shared library in Root/Cint

From: HP Wei (hp@rentec.com)
Date: Wed Aug 02 2000 - 00:18:03 MEST


Hi I am making some progress.  But not quite there yet.

Following Philippe's suggestion, I did the following

>rootcint dict.C -c -p engine.h
  This eliminates all error messages that I encountered
  as described previously.
  
 Then, the following two compiling steps are all ok.
 g++ -O -fPIC -I/... -c -o dict.o dict.C
 and
 g++ -O myroot.o dict.o -L/rootlibs -L/commercial_shared_libs -o myroot
 
 However,
 in myroot (a custom version of Root/Cint),
 all the functions in the commercial shared libs cannot be 
 recognized.
 In fact, when I look into dict.C and dict.h, I could not
 find any reference to the C functions defined in engine.h.
 Is there any other steps that I can do?

Thanks,
HP
 
 Note: myroot.C is 
 ----------------

#include "TROOT.h"
#include "TRint.h"

TROOT root("Rint","The ROOT Interactive Interface");

int main(int argc, char **argv)
{
   TRint *theApp = new TRint("Rint", &argc, argv, 0, 0);
   // Init Intrinsics, build all windows, and enter event loop
   theApp->Run();

   delete theApp;

   return(0);
}

----------------------------------------
Note: the first posting for your reference.

>>  I want to use a set of commercial C libraries
>>  (libeng.so for Sun's Solaris) in Root/Cint (2.25).
>> 
>>  Following Fon's suggestion, the plan is to 
>>  (1) rootcint dict.C -c engine.h   
>>      to create the dictionary files for CINT.
>>      Here, the engine.h is the header file from
>>      this commercial package.
>>      It defines a set of C functions and #include 
>>      other header files.
>>      
>>  (2) compile this dict.C with main.C 
>>      in the example in the article "CINT Dictionary Generator".
>>      
>>  Now, during step (1) I encounter the following three types of
>>  error (warning) situations.
>>  In each situation, I also append the surrounding lines
>>  in the header file at issue.
>>  Can anyone help out??
>>  
>>  
>> 
>> (1) ------ Limitation message
>> Limitation: macro handled as typedef char INT8_T; FILE:tmwtypes.h LINE:88
>> 
>> ------ lines around LINE:88
>> #ifndef INT8_T
>> # if CHAR_MIN == -128
>> #   define INT8_T char
>> # elif SCHAR_MIN == -128           <------- line 88
>> #   define INT8_T signed char
>> # endif
>> #endif
>> 
>> (2) ------ Error message
>> Limitation: can not handle macro UINTEGER_T unsigned Use +P or -p option
>>  FILE:tmwtypes.h LINE:284
>> Error: class,struct,union or type UINTEGER_T not defined  FILE:tmwtypes.h 
>> LINE:285
>> 
>> ------ lines around LINE:284
>> #ifndef UINTEGER_T
>> #define UINTEGER_T unsigned
>> #endif                             <------- line 284
>> typedef UINTEGER_T uint_T;
>> 
>> (3) ------ Error message
>> Error: Unexpected EOF G__exec_statement() FILE:engine.h LINE:175
>> Advice: You may need to use +P or -p option
>> 
>> ------ 
>> Upon inspection of File:engine.h, I find that the line:175 is
>> the end of the file:engine.h.
>> 



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:30 MET