Search code examples
linuxqtlinkershared-librariessymbol-table

symbol lookup error: ./executableName: undefined symbol: _ZN18QXmlDefaultHandlerC2Ev


I am trying to run an executable on Linux Mint 16 x64 that was compiled for Ubuntu 12 x64. The executable uses Qt 5.1.1 dynamically during runtime. I get the error:

loaded the dummy plugin 
loaded the Linux plugin 
updating server status 
./executableName: symbol lookup error: ./executableName: undefined symbol: _ZN18QXmlDefaultHandlerC2Ev

When I run

ldd executableName | grep "not found"

searching for missing dependencies I get no result; all dynamic dependencies seem to be found, but the undefined symbol error above persists.

Thoughts?


Solution

  • A quick help:

    $ echo _ZN18QXmlDefaultHandlerC2Ev|c++filt
    QXmlDefaultHandler::QXmlDefaultHandler()
    

    Thus, you don't have a constructor for QXmlDefaultHandler. Googling for that we can found here, that at least Qt-4.8 and Qt-5.3 contains this library.

    I think, there is some type of incompatibility between your actual running Qt library and between for which the executable was compiled for. My suggestion were to recompile that executable from source, but on your mint.

    It is not impossible, that porting the source package from ubuntu will be a little bit hard for you, in this case I suggest a simple upstream source recompilation (or even binary download, if there is one).