Hi Benoit,
If you want to call a function in a shared lib from CINT,
the dictionary must be available.
If you do not want to run rootcint yourself, you can use ACLIC
to do this automatically for you by doing:
root > .L test.cc++
root > truc()
Rene Brun
On Mon, 21 Oct 2002, Benoit Revenu wrote:
> dear all,
>
> is it possible to load a shared library made of some functions (no
> classes) without making a dictionnary ? I would like to obtain the same
> behavior than using .L source.cc but using .L libsource.so.
>
> for instance:
> cat test.cc:
> #include <iostream>
> void truc()
> {
> cout << "hello" << endl;
> }
>
> then build libtruc.so with
> g++ test.cc -c -o test.o
> then
> g++ -shared test.o -o libtruc.so
>
> then, in ROOT,
> .L libtruc.so // is ok
> but
> truc() fails :
> root [0] .L libtruc.so
> root [1] truc()
> Error: Function truc() is not defined in current scope
> FILE:/tmp/fileYEaRUQ_cint LINE:1
> Possible candidates are...
> filename line:size busy function type and name
> *** Interpreter error recovered ***
>
> but
> root [0] .L test.cc
> root [1] truc()
> hello
>
> works fine !
>
>
> Benoît
>
> -------------------------------------------------------------------------------
> GReCO / IAP
> (+33) (0) 1 44 32 81 79
> -------------------------------------------------------------------------------
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:15 MET