[ROOT] Using a class from a shared lib

From: Ole Streicher (ole@ifh.de)
Date: Mon Sep 02 2002 - 14:10:02 MEST


Hello!

Ole Streicher writes:
 > When I put the "ClassDef" line into the class declaration, I get a
 > number of mystic linking errors when compiling the class:

I managed that a to be a bit more sucessfull. The mein problem was
that "rootcint" doesn't accept the "const" modifier in the definition
of member variables. (why?)

Now I can compile and link my program. However, when I try to use it
from "root", I get some mysterious errors:

root [0] gSystem->Load("run/.libs/libmyrun");
root [1] using namespace my;
root [2] MyRun run("ll",1);
Error: Can't call MyRun::MyRun("ll",1) in current scope FILE:/tmp/file4YJOh0_cint LINE:1
Possible candidates are...
filename       line:size busy function type and name  (in MyRun)
(compiled)        0:0    0 public: my::MyRun MyRun(my::string,int,my::string=none);
(compiled)        0:0    0 public: my::MyRun MyRun(const my::MyRun&);
*** Interpreter error recovered ***

What I could imagine is that "root" has problems with namespaces; I
declared the constructor of MyRun as

my::MyRun::MyRun(std::string, int, std::string = "none");

but Root thinks it is

my::MyRun::MyRun(my::string,int,my::string=none);

What can I do that it takes "string" from namespace std and not from
namespace "my"? And why it changes the namespace at all? Within a
compiled program, everything works fine.

Ole



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:06 MET