Dlopen error when running program containing TFFTComplex

Hi,

I was trying to use Fourier transforms in Root, which I have now built with FFTW support.
But when I run my program the following error message stops it:

dlopen error: /home/xuser/go4code/other/felpulse/./libGo4UserAnalysis.so: undefined symbol: _ZTV11TFFTComplex Load Error: Failed to load Dynamic link library /home/xuser/go4code/other/felpulse/./libGo4UserAnalysis.so
c++filt tells me that it is the vtable of TFFTComplex which cannot be found.

Does anyone have a idea what this could be about.? I am using Root 5.28 on ubuntu linux. So far, I only include TFFTComplex.h and declare an object of this type.

Thanks for any hints!
Arne,

Hi,

You are probably not linking against and/or loading the library libFFTW (or it is not built). Note that you can find out the library name to which a class belong by long at its documentation page see root.cern.ch/root/html/TFFTComplex.html

Cheers,
Philippe.

Hi Philippe,

thanks for your reply. I forgot to mentioned that I had checked that libFFTW is built. But I am honestly not really sure what to do in order to “link and/or load” it. It is in the $ROOTSYS/lib folder which in turn is part of my $LD_LIBRARY_PATH . I thought that libraries from there should be automatically loaded or do I have to do anything more?

Kind Regards,
Arne.

HI Arne,

It depends on how you library are loaded. If you load your library explicitly and if they do not have a rootmap file (you can generate one using rlibmap), then you must load the dependent library also explicitly.

Cheers,
Philippe.

Hi Philippe,

now it is working. My library has a rootmap, and is generated by the makefile which is taken from the Go4 environment which I use on top of Root in my program. As long as this worked, I never looked much into these things. Now I added libFFTW in the rlibmap call and it works.

Thank you very much for the helpful hints,
Arne.