Rootcint, creating dict + third party libs

Dear devs,

I want to make a dictionary file for a class TBBQManager. In the header file I’ve included some third party libraries. That is where things go wrong. I executed rootcint with (many dots = some obscured path)

rootcint -f BBQDict.cxx -c -w -g -I/afs/........./include -I/afs/.........../include -I/afs/............/include -p TBBQManager.h Linkdef.h

with the class TBBQManager having some pointers to classes defined in the third party libs and where Linkdef.h is

#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ nestedclasses;

#pragma link C++ class TBBQManager+;

It returns the error

Internal error: global function template arg type /afs/......../Vector3D.h:27:
Warning: Error occurred during reading source files
Warning: Error occurred during dictionary source generation
!!!Removing BBQDict.cxx BBQDict.h !!!
Error: rootcint: error loading headers...
make: *** [BBQDict.cxx] Error 1

with the code snippet from Vector3D.h

00017 class Vector3D{
00026   template <class T>
00027   Vector3D( double x,double y, double z , T(&)() ) ;
00195 } ;

The questions are:

  1. Straightforward one: how to fix it.
  2. If I want to make a dict for my own class only, why does it care about the other classes?

With regards,


[quote] If I want to make a dict for my own class only, why does it care about the other classes?[/quote]Well in the general case, you class might contain any of the other class defined in any of the header you include. If the include are not necessary do not include them :slight_smile:.

[quote]1. Straightforward one: how to fix it.[/quote]You will need to hide this specific header from CINT. i.e.#ifndef __CINT__ #include "Vector3D.h" #else // Here we need to forward declared things that are used by our // code. class Vector3D; #endif


The forward declaration was my missing part, thx!