Rootcint "feature" : need name of class in header

Hi all,

Maybe this has been addressed before and maybe it is in a documentation somewhere, but I got this strange rootcint behaviour :

when trying to “rootcint” a header with automatic LinkDef :

rootcint -f G_frameL.cc -c -D__cplusplus ./FrameL.h

I get the following error

Error: link requested for unknown class FrameL G__auto1776LinkDef.h:7:
Warning: Error occurred during reading source files
Warning: Error occurred during dictionary source generation
!!!Removing G_frameL.cc G_frameL.h !!!
Error: rootcint: error loading headers…

which is because I don’t define a class “FrameL” (the name of the header file) inside the header file. If I change the filename to be xxxx.h where xxxx is the name of an existing class inside the header, everything works.

Is this expected ? My header is a set of C functions/structs…

Cheers

Damir

Hi Damir,

[quote]Is this expected ? My header is a set of C functions/structs… [/quote]Yes it is. If the last argument is not a file whose name end (with some flexibility on the ‘casing’) with LinkDef.h then a trivial linkdef file is probived for you; This linkdef provided for you essentially contains#pragma link C++ class filenameOne; #pragma link C++ class filenameTwo;

So you need to provide a linkdef file which list the class and function for which you want the dictionary to be generated. If you already have #pragma embedded in your header files, the linkdef.h can be empty.

Cheers,
Philippe.

[quote]If the last argument is not a file whose name end (with some flexibility on the ‘casing’) with LinkDef.h then a trivial linkdef file is probived for you; This linkdef provided for you essentially contains#pragma link C++ class filenameOne; #pragma link C++ class filenameTwo;
[/quote]

Does this mean that the dictionary will NOT be generated for all the other classes present in the header ? I never noticed this, after so many years of ROOT-ing…

Cheers

Damir

[quote]Does this mean that the dictionary will NOT be generated for all the other classes present in the header ?[/quote]Yes, that is ‘unexpected’ but correct. We have a feature request to change this default to generating (using #pragma defined_in) the dictionary for all the declared symbol in the header file.

Cheers,
Philippe.