Dictionary for vector<vector<flloat> >, gROOT->ProcessLine

Hi all,

While running my Standalone ROOT program (version 5.26.00e), I am having the error:

Error in TBufferFile::CheckByteCount: object of class vector<vector > read too few bytes: 6 instead of xxx

To solve that, I created a dictionary in a file called vector_float.cc, which has the lines:
#ifdef CINT
#pragma link C++ class std::vector<std::vector >+;
#pragma link C++ class std::vector<std::vector >+;
#endif

In my main file I am compiling it with the command:
gROOT->ProcessLine(".L vector_float.cc+");

This compiles, but while running I still have tons of lines:
Error in TBufferFile::CheckByteCount: object of class vector<vector > read too few bytes…

However, adding a “+” at the end of the command solves the problem:
gROOT->ProcessLine(".L vector_float.cc++");

This works. The extra “+” is forcing the library to be rebuilt everytime.
So, this means than in the previous case it is otherwise not being loaded properly.
Do you know what could prevent the script not to be loaded with the command:
gROOT->ProcessLine(".L vector_float.cc+");
?

Thank you in advance,

Regards,

Claire

Hi,

It could have been build by a previous version of ROOT or the previous compilation might have failed.

Cheers,
Philippe.

PS. (Especially for you standalone applications), I recommend that you upgrade to ROOT v5.30

Hi,

Thank you for your reply.

Regards,

Claire