Re: [ROOT] Rootcint again: Linker errors

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Aug 23 2002 - 17:25:59 MEST


Ole,

You must be consistent if you use namespaces.
In LinkDef.h replace:

#pragma link C++ class EventHeader;
by
#pragma link C++ class myexperiment::EventHeader;
or even better
#pragma link C++ class myexperiment::EventHeader+; (for auto schema
evolution)

Rene Brun


On Fri, 23 Aug 2002, Ole Streicher wrote:

> Hello again!
> 
> I have now the problem to get linker errors when using rootcint.
> When I try to link my class to a complete program, I get the following:
> 
> undefined reference to `myexperiment::EventHeader::ShowMembers(TMemberInspector &, char *)'
> undefined reference to `ROOT::GenerateInitInstance(myexperiment::EventHeader const *)'
> undefined reference to `myexperiment::EventHeader::Streamer(TBuffer &)'
> undefined reference to `myexperiment::EventHeader::Class(void)'
> 
> The rootcint call I use is 
> 
> rootcint -f EventHeaderDict.cpp -c EventHeader.h LinkDef.h
> 
> and ofcourse I include the "EventHeaderDict.cpp" in my library. Doing
> a "grep Streamer EventHeaderDict.cpp" also doesn't show any match.
> 
> I have the following relevant files:
> 
> EventHeader.h
> ==============
> #include <TObject.h>
> namespace myexperiment {
>   class EventHeader : public TObject {
>   private:
>     int i;
>   public:
>     EventHeader();
>     EventHeader(int);
>     ~EventHeader();
>     ClassDef(EventHeader, 1)
>   };
> }
> 
> EventHeader.cpp
> ===============
> #include "EventHeader.h"
> using namespace myexperiment;
> EventHeader::EventHeader(int run) {}
> EventHeader::~EventHeader() {}
> ClassImp(EventHeader)
> 
> LinkDef.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 EventHeader;
> #endif
> 
> Can you hint what is wrong here?
> 
> Tschuessi
> 
> Ole
> 



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