I have compiled classes and generated dictionaries for them using rootcling. I then have a .pcm file and a .so file. If I try to load the .so in Python or even linked to a .exe file, I get a host of cling errors like “Error in cling::AutoloadingVisitor::InsertIntoAutoloadingState” followed by a crash.
Browsing around it seems that a ROOT_INCLUDE_PATH needs to be set.
Does this really mean that I can only have a .so with dictionary data if I ship the headers along with the binary? That would be very troublesome.
Just to be clear, I am using -inlineInputHeader when running rootcling … still, no luck: when I load the .so I get a long trace of AutoloadingVisitor errors.
Python relies on PyROOT for the C++ interaction; PyROOT relies on cling, and cling uses the clang libraries. They need to parse the header to know what types are around, which interfaces they have etc.
If you don’t need interactivity (no Python, no cling) then you should be able to do without.
That said, it is possible that there is an issue with the combination of
-inlineInputHeader and autoload entries. If you have a smallish reproducer then please create a Jira ticket at https://root.cern/bugs and we’ll have a look at it.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.