Juce 1.52.110 -> link broken?


#1

Hi !

I’ve got really strange errors with the latest “official” juce (1.52.110) under linux. Got a bunch of errors like those :

../../obj/gmake/x32/Debug/Fusion/application_startup.o:(.rodata._ZTV17FusionApplication[vtable for FusionApplication]+0x54): undefined reference to `non-virtual thunk to juce::JUCEApplication::actionListenerCallback(juce::String const&)' ../../obj/gmake/x32/Debug/Fusion/audio_brick_player.o:(.rodata._ZTVN2sb3gui26AudioBrickTransportControlE[vtable for sb::gui::AudioBrickTransportControl]+0x110): undefined reference to `non-virtual thunk to juce::Slider::handleAsyncUpdate()'

I have no idea about what it means, and google hasn’t been a great help so far.

The thing is it’s a new problem. Last juce version we used was 1.52.69 and it linked just fine ! I tried again just now, and it works with the old version.
Was there a change in linking or something like that ? Anyone else experiencing this issue ?


#2

I seem to be having exactly the same problem. The strange thing is that this exact symbol seems to be in the archive Juce builds.

For example, I get the errors

ApplicationStartup.o:(.rodata._ZTV8AppClass[vtable for AppClass]+0xa8): undefined reference to `non-virtual thunk to juce::JUCEApplication::actionListenerCallback(juce::String const&)' Stretch.o:(.rodata._ZTV9DasSlider[vtable for DasSlider]+0x210): undefined reference to `non-virtual thunk to juce::Slider::handleAsyncUpdate()' Stretch.o:(.rodata._ZTV9DasSlider[vtable for DasSlider]+0x238): undefined reference to `non-virtual thunk to juce::Slider::buttonClicked(juce::Button*)' Stretch.o:(.rodata._ZTV9DasSlider[vtable for DasSlider]+0x268): undefined reference to `non-virtual thunk to juce::Slider::labelTextChanged(juce::Label*)' Stretch.o:(.rodata._ZTV9DasSlider[vtable for DasSlider]+0x290): undefined reference to `non-virtual thunk to juce::Slider::valueChanged(juce::Value&)' Progressbar.o:(.rodata._ZTV6MyTask[vtable for MyTask]+0x50): undefined reference to `non-virtual thunk to juce::ThreadWithProgressWindow::timerCallback()'

Whereas

Gives me

non-virtual thunk to juce::JUCEApplication::actionListenerCallback(juce::String const&) juce::JUCEApplication::actionListenerCallback(juce::String const&) juce::JUCEApplication::actionListenerCallback juce::JUCEApplication::actionListenerCallback(juce::String const&) juce::ActionListener::actionListenerCallback(juce::String const&) actionListenerCallback non-virtual thunk to juce::JUCEApplication::actionListenerCallback(juce::String const&) juce::JUCEApplication::actionListenerCallback(juce::String const&) juce::ActionListener::actionListenerCallback(juce::String const&) actionListenerCallback juce::ActionListener::actionListenerCallback(juce::String const&) actionListenerCallback juce::ActionListener::actionListenerCallback(juce::String const&) actionListenerCallback juce::ActionListener::actionListenerCallback(juce::String const&) actionListenerCallback juce::ActionListener::actionListenerCallback(juce::String const&) actionListenerCallback

Which indicates that the symbol is defined in the library, which I most definitely am linking with, because if I remove the line “-ljuicedebug” from my linker options, I get a million Undefined references, rather than just six.

Have you managed to fix this problem on your own?


#3

I’m having this problem on MacOS


#4

Whenever I’ve had a ‘non-virtual thunk’ problem, it always seems to just be caused by the build getting out-of-step, and a good clean rebuild often sorts it out…