Still using "cint" for dictionary generation

Hi all,

It’s been a while since I didn’t dig into dictionary generation. I need to adapt my old code to a new version of ROOT and I have the following problem :

My code was using pure cint to generate a dictionary, namely for the fftw package (something like cint -n -Ibla/bla/bla -D__MAKECINT__ -DG__MAKECINT -c-1 -A -DG__REGEXP -DG__SHAREDLIB -DG__OSFDLL -DG__ROOT -D__cplusplus …/src/fftw_bridge/fftw3_special.h )

It worked in v5.18 of ROOT, not anymore in v5.22 since the “cint” executable is not there anymore by default. I don’t exactly remember why, but “rootcint” was not working on that header and I had to use pure cint.

Questions :

  • Is the equivalent to to this command available somewhere by default ?
  • should I install pure cint or is there a way to overcome this problem ?

Thanks for any help and sorry if the answer is in an obvious place.


Hi Damir!

The version of CINT that was distributed with ROOT was a) not meant to be used (root was :-), b) collided with standalone CINT packages, and c) was different than standalone CINT. That’s why we removed it.

You should be able to use rootcint; it will also enable I/O for this library. I tried on /usr/include/fftw3.h, running rootcint -f fftw_dict.cxx -c -p fftw3.h Linkdef.h

Linkdef.h was #pragma link C++ defined_in fftw3.h;

And that worked. So please let me know how to reproduce the problem you see with fftw!

Cheers, Axel.

Hi Axel,

Thanks, that worked fine. Actually, I didn’t have the LinkDef. And I don’t understand why you would need one in this particular case. Without it, the error was

Error: link requested for unknown class fftw3_special G__auto28832LinkDef.h:7:

But now, everything is fine, thanks a lot.

Back to other errors…

Thanks again



the reason why you need a linkdef file is CINT: without it, CINT assumes that you want to create a dictionary for TWhatever when running on TWhatever.h. I agree that it would make sense to change that so it generates the dictionary of everything in the file, but it would be (slightly) backward incompatible. I’ll think about it.

Cheers, Axel.