Re: no dictionary

From: Venkatesh Kaushik <venkat.kaushik_at_cern.ch>
Date: Wed, 28 Sep 2011 11:56:50 -0700


Hi Marc,
If you don't have a LinkDef.h you can still load the autodict (with aclic complied code)

just at the top of your source file do
#include "blah.h"
#ifdef __CINT__
#pragma link C++ class std::pair<std::string, std::string>;
#endif

int main() {
}

Or if you use a Makefile you need a couple of rules to generate/compile the relevant dictionaries (for example I have a couple below)

# Rule to create the dictionary

$(DICTFILE): $(HLIST) $(DICTLDEF)
    @echo "azdpd --> Generating dictionary $@"     @$(shell root-config --exec-prefix)/bin/rootcint -f $(DICTFILE) -c -p $(INCLUDES) $^

# Rule to compile the dictionary

$(DICTOBJ): $(DICTFILE)
    @echo "azdpd --> Compiling $<"
    @mkdir -p $(OBJDIR)
    $(CXX) $(CXXFLAGS) -g -O2 -c $(INCLUDES) -o $@ $<

Marcelo Zimbres wrote:

> Hi Marc,
>
> are you compiling your code with a Makefile or using aclic? If you are
> using a Makefile you should not forget to generate the dictionaries
> from you class header file using rootcint. If you are using aclic the
> dictionaries should be generated automatically.
>
> But from the warning lines you sent, it seems you are not loading the
> appropriate shared libs(the one containing the dictionaries) when you
> try to read a root file containing the objects in question.
>
> Can you send us more information?
>
> Cheers
> Marcelo
>
> 2011/9/28 Marc Escalier <escalier_at_lal.in2p3.fr
> <mailto:escalier_at_lal.in2p3.fr>>
>
>     thanks Venkat
>
>     actually, i have no file "LinkDef.h" in my program
>
>     would you have an idea ?
>
>     just for information, my program is a compiled one, with the main
>     code being a class that inheritate from TSelector, after having
>     used MakeSelector() to create it
>
>     ======================
>
>
>     On Wed, 28 Sep 2011, Venkatesh Kaushik wrote:
>
>         Hi Marc,
>         For the second warning, you need to include
>         in your LinkDef.h the following:
>         #pragma link C++ class std::pair<std::string, std::string>;
>
>         The first one is (I think ATLAS specific and no dictionary
>         is available).
>         - Venkat
>
>         Marc Escalier wrote:
>
>             Hello,
>
>             would somebody know what is the meaning of :
>
>             Warning in <TClass::TClass>: no dictionary for class
>             AttributeListLayout is available
>             Warning in <TClass::TClass>: no dictionary for class
>             pair<string,string> is available
>
>             thanks
>
>
>
>         -- 
>         =========================================================
>         Venkatesh Kaushik
>         Research Associate
>
>         University of Arizona              ATLAS Experiment_at_CERN
>         Office: PAS 334                    40-1-C11
>         Tucson, Arizona                    Gen?ve, Switzerland
>
>         Tel: +1 520 626 7042 <tel:%2B1%20520%20626%207042>            
>           +41 22 76 79137 <tel:%2B41%2022%2076%2079137>
>         venkat_at_physics.arizona.edu <mailto:venkat_at_physics.arizona.edu>
>                 venkat.kaushik_at_cern.ch <mailto:venkat.kaushik_at_cern.ch>
>              http://atlas.physics.arizona.edu/~venkat
>         <http://atlas.physics.arizona.edu/%7Evenkat>
>         =========================================================
>
>
>
>


-- 
=========================================================
Venkatesh Kaushik
Research Associate

University of Arizona              ATLAS Experiment_at_CERN
Office: PAS 334                    40-1-C11
Tucson, Arizona                    Genève, Switzerland
Tel: +1 520 626 7042               +41 22 76 79137
venkat_at_physics.arizona.edu         venkat.kaushik_at_cern.ch
       http://atlas.physics.arizona.edu/~venkat
========================================================= 
Received on Wed Sep 28 2011 - 20:57:01 CEST

This archive was generated by hypermail 2.2.0 : Wed Sep 28 2011 - 23:50:01 CEST