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!
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
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?
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.
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,