Undefined symbol and STL dictionary generation in proof-lite

Dea experts,

I compiled my TSelector analysis module into a shared libruary. I wrote a steering macro to submit a proof-lite job. Here is my steering macro:

void runProofLite{
 TProof* p=TProof::Open("");
 p->Load("libMyAna.so");
 TChain* ch=new TChain("mytree");
  ch->Add("qstar.root");
  ch->SetProof();

  gROOT->Time();
  excitedQAna* ana=new excitedQAna();
  ch->Process(ana);
}

However, I encountered two error messages:

After several try & errors, I could resolved the issues by

  1. Explictely loading the libPhysics.so in my steering macro

void runProofLite{ ... p->Load("/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase/x86_64/root/5.34.19-x86_64-slc6-gcc4.7/lib/libPhysics.so"); ... }
2. Add following lines to the source codes and rebuild the libMyAna.so

void MyAna::SlaveBegin(Tree*){ ... gInterpreter->GenerateDictionary("vector<vector<int> >", "vector"); ... }
My solutions looks quite ad hoc.
Could you recommend alternative ways by changing some configurations, or some flags in the Makefile?

Look forward to your comments and suggestions.

Shih-Chieh

Hi,

to eliminate the explicit load of the library (or the explicit hidden behind the dictionary generation :wink: ) you could link libPhysics.so to your library directly.

Cheers,
Danilo