Compiling error: undefined reference to `ThumbCreator::~ThumbCreator()'

Hi everyone,

I don't manage to compile kdenlive from source anymore. FFmpeg, MLT and MLT++ all installed correctly afaik, no dependency problems anymore.

[ 85%] Building CXX object src/cmake_bindir/CMakeFiles/kdenlive.dir/mainwindowadaptor.o Linking CXX executable kdenlive [ 85%] Built target kdenlive Generating renderjob.moc [ 86%] Building CXX object renderer/cmake_bindir/CMakeFiles/kdenlive_render.dir/kdenlive_render_automoc.o [ 86%] Building CXX object renderer/cmake_bindir/CMakeFiles/kdenlive_render.dir/kdenlive_render.o [ 87%] Building CXX object renderer/cmake_bindir/CMakeFiles/kdenlive_render.dir/renderjob.o Linking CXX executable kdenlive_render [ 87%] Built target kdenlive_render Generating westleypreview.moc [ 88%] Building CXX object thumbnailer/cmake_bindir/CMakeFiles/westleypreview.dir/westleypreview_automoc.o [ 88%] Building CXX object thumbnailer/cmake_bindir/CMakeFiles/westleypreview.dir/westleypreview.o Linking CXX shared module ../../lib/westleypreview.so CMakeFiles/westleypreview.dir/westleypreview.o: In function `WestleyPreview': /data/cworkspace/kdenlive-kde4/thumbnailer/westleypreview.cpp:59: undefined reference to `ThumbCreator::~ThumbCreator()' /data/cworkspace/kdenlive-kde4/thumbnailer/westleypreview.cpp:59: undefined reference to `ThumbCreator::~ThumbCreator()' CMakeFiles/westleypreview.dir/westleypreview.o: In function `~WestleyPreview': /data/cworkspace/kdenlive-kde4/thumbnailer/westleypreview.cpp:65: undefined reference to `ThumbCreator::~ThumbCreator()' /data/cworkspace/kdenlive-kde4/thumbnailer/westleypreview.cpp:65: undefined reference to `ThumbCreator::~ThumbCreator()' /data/cworkspace/kdenlive-kde4/thumbnailer/westleypreview.cpp:65: undefined reference to `ThumbCreator::~ThumbCreator()' CMakeFiles/westleypreview.dir/westleypreview.o:/data/cworkspace/kdenlive-kde4/thumbnailer/westleypreview.cpp:65: more undefined references to `ThumbCreator::~ThumbCreator()' follow CMakeFiles/westleypreview.dir/westleypreview.o:(.data.rel.ro._ZTI14WestleyPreview[typeinfo for WestleyPreview]+0x18): undefined reference to `typeinfo for ThumbCreator' collect2: ld returned 1 exit status make[2]: *** [lib/westleypreview.so] Fehler 1 make[1]: *** [thumbnailer/cmake_bindir/CMakeFiles/westleypreview.dir/all] Fehler 2 make: *** [all] Fehler 2

Any ideas?

Thanks,

Simon

I could not compile Kdenlive svn 2928 and posted on the mailing list. Wait for a fix ...

Hello,

i have kde4 on gentoo and first had 4.1 which worked ok for 0.7, then i upgraded to kde4.2 and got this error compiling 0.7.1. Now i cant even compile 0.7. The problems started when i removed kde4.1 kdelibs (where ThumbCreator resides i belive). So it might be kde related, maybe they moved this funcionality elsewhere.

Which kde version do you use?

Best regards,
Slavko

@jmpoure Yes, I saw that; but your error occurs later and not in ~ThumbCreator(). I've got more things that are wrong  … :S

@slavko Yeh, it is about the same way here. I have also upgraded to 4.2 (RC), but I'm not quite sure whether that caused the problem, I only know that also kdenlive from the repository didn't start anymore after the upgrade.

I've searched for ThumbCreator with apt-file ThumbCreator which then showed me that the file is in kdelibs5-dev. Perhaps that is the reason? This library has been upgraded recently from kdelibs4-dev.

Simon

Im pretty sure its a kde4.2 kdelibs (or as you define it, kdelibs5-dev) problem. Before i had both 4.1 and 4.2 installed and kdenlive worked (which doesnt seem right but it worked:).

Gentoo has a hard dependency on kde4.1 set, so i guess kdenlive wants kde4.1?

jmpoure if you can point me in the right direction for this i would like to check it out, im a programmer.

Thanks!
Slavko

The compile error with dvdwizard has been fixed.

I cannot reproduce the problem with westleypreview, and think it might be an issue with your installed Kdelibs...

The westleypreview is not really part of Kdenlive, it is a small KDE plugin that creates previews of your MLT / Kdenlive project files so that you can see a thumbnail when browsing through your folders with dolphin or konqueror...

As a workaround if you need to build Kdenlive, you can simply disable the build of this westleypreview module. To to this, edit the CMakeLists.txt file in the base directory and comment the following line (around line 28) :

add_subdirectory(thumbnailer thumbnailer/cmake_bindir)

(add a # before the line).

This will disable building of this module.

Okay, it clearly wasn't kdelibs5-dev. kdelibs4-dev seems quite outdated and I couldn't even cmake the project.

Compiling indeed worked after compiling it out. But hell, I still cannot run kdenlive.

$ gdb ./kdenlive
GNU gdb 6.8-debian                                                                  
Copyright (C) 2008 Free Software Foundation, Inc.                                   
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>       
This is free software: you are free to change and redistribute it.                  
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"          
and "show warranty" for details.                                                    
This GDB was configured as "i486-linux-gnu"...                                      
(gdb) run                                                                           
Starting program: /data/cworkspace/kdenlive-kde4/build/src/cmake_bindir/kdenlive    
[Thread debugging using libthread_db enabled]                                       
[New Thread 0xb5f886c0 (LWP 8978)]                                                  
kdenlive(8978) MainWindow::parseProfiles: RESULTINGÂ MLT PATH:  "/usr/share/mlt/profiles/"
mlt_repository.c, mlt_repository_init: failed to dlopen /usr/local/lib/mlt/libmltavformat.so
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
kdenlive(8978) initEffects::parseEffectFiles: //  INIT EFFECT SEARCH
kdenlive(8978) Render::Render: //////////  USINGÂ PROFILE:  hdv_1080_50i
kdenlive(8978) Monitor::Monitor: /////// BUILDING MONITOR, ID:  62914837
kdenlive(8978) Render::Render: //////////  USINGÂ PROFILE:  hdv_1080_50i
kdenlive(8978) Monitor::Monitor: /////// BUILDING MONITOR, ID:  62914937
kdenlive(8978) RecMonitor::RecMonitor: /////// BUILDING MONITOR, ID:  62914982
QStatusBar::insertPermanentWidget: Index out of range (5), appending widget
QStatusBar::insertPermanentWidget: Index out of range (7), appending widget
kdenlive(8978)/kdeui (kdelibs): No such XML file "kdenliveui.rc"
kdenlive(8978): Shortcut for KAction  "monitor_play_zone" "Play Zone" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(8978): Shortcut for KAction  "monitor_loop_zone" "Loop Zone" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(8978) MainWindow::loadPlugins: // PARSING FIOLER:  "/usr/lib/kde4/"

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb5f886c0 (LWP 8978)]
0xb6ef3277 in QMenu::menuAction () from /usr/lib/libQtGui.so.4
(gdb) thread apply all bt

Thread 1 (Thread 0xb5f886c0 (LWP 8978)):
#0  0xb6ef3277 in QMenu::menuAction () from /usr/lib/libQtGui.so.4
#1  0x080dc810 in Monitor::setupMenu (this=0x88cd9c0, goMenu=0x0, playZone=0x8c308e0, loopZone=0x8c308f8, markerMenu=0x0) at /data/cworkspace/kdenlive-kde4/src/monitor.cpp:150
#2  0x080bd64b in MainWindow (this=0x86f7d70, MltPath=@0xbfdc29ec, Url=@0xbfdc29cc, parent=0x0) at /data/cworkspace/kdenlive-kde4/src/mainwindow.cpp:234
#3  0x080a5a62 in main (argc=1, argv=0xbfdc2b34) at /data/cworkspace/kdenlive-kde4/src/main.cpp:71

:(

Simon

This is surely related to my problem, this happened when i compiled from svn (i excluded the thumbnailer):
$ ./kdenlive
kdenlive(16696) MainWindow::parseProfiles: RESULTINGÂ MLT PATH: "/usr/share/mlt/profiles/"
QFSFileEngine::open: No file name specified
QFSFileEngine::open: No file name specified
kdenlive(16696) initEffects::parseEffectFiles: // INIT EFFECT SEARCH
kdenlive(16696) Render::Render: ////////// USINGÂ PROFILE: hdv_1080_25p
kdenlive(16696) Monitor::Monitor: /////// BUILDING MONITOR, ID: 50331905
kdenlive(16696) Render::Render: ////////// USINGÂ PROFILE: hdv_1080_25p
kdenlive(16696) Monitor::Monitor: /////// BUILDING MONITOR, ID: 50332002
kdenlive(16696) RecMonitor::RecMonitor: /////// BUILDING MONITOR, ID: 50332040
QStatusBar::insertPermanentWidget: Index out of range (5), appending widget
QStatusBar::insertPermanentWidget: Index out of range (7), appending widget
kdenlive(16696)/kdeui (kdelibs): No such XML file "kdenliveui.rc"
kdenlive(16696): Shortcut for KAction "monitor_play_zone" "Play Zone" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(16696): Shortcut for KAction "monitor_loop_zone" "Loop Zone" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(16696) MainWindow::loadPlugins: // PARSING FIOLER: "/usr/kde/live/lib64/kde4/"
KCrash: Application 'kdenlive' crashing...
sock_file=/home/slavko/.kdelive/socket-mediaquad/kdeinit4__0

Yeh, looks similar here (I'm not sure whether I've got the 64bit-lib too, as I'm using 32bit) when I start it directly without gdb. Glad not to be the only one … Is it difficult to find out the problem? 

Simon

Just to be clear, you have 2 options if you want to compile kdenlive:

1) Use the Builer Wizard
The builder compiles FFmpeg, MLT and Kdenlive and installs them in a local folder (usually $HOME/kdenlive). Then you can start kdenlive using the script: $HOME/kdenlive/bin/kdenlive_start

2) You compile by yourself and have to install in the same place as your KDE install (usually /usr ), see instructions on [1]. Then you start kdenlive using the installed version (/usr/bin/kdenlive)

From the log I saw in the previous posts, it seems like you didn't install kdenlive!

[1]
http://kdenlive.org/user-manual/downloading-and-installing-kdenlive/inst...

Just to make sure whether I've understood it the right way, jb: I have to do a make install before trying to start kdenlive? I cannot just compile it and run it from the build/src/cmake_bindir (or similar) directory?

If so … I'd have no more free time over the weekend ;)

Simon

Yes, that was my point. You NEED to install before running Kdenlive.

regards

Indeed. I've got … damn. Another error message now.

$ kdenlive                                                                      
kdenlive(3753) MainWindow::parseProfiles: RESULTING MLT PATH:  "/usr/share/mlt/profiles/"
mlt_repository.c, mlt_repository_init: failed to dlopen /usr/local/lib/mlt/libmltavformat.so
kdenlive(3753) initEffects::parseEffectFiles: //  INIT EFFECT SEARCH
kdenlive(3753) Render::Render: //////////  USING PROFILE:  hdv_1080_50i
kdenlive(3753) Monitor::Monitor: /////// BUILDING MONITOR, ID:  60817688
kdenlive(3753) Render::Render: //////////  USING PROFILE:  hdv_1080_50i
kdenlive(3753) Monitor::Monitor: /////// BUILDING MONITOR, ID:  60817788
kdenlive(3753) RecMonitor::RecMonitor: /////// BUILDING MONITOR, ID:  60817833
QStatusBar::insertPermanentWidget: Index out of range (5), appending widget
QStatusBar::insertPermanentWidget: Index out of range (7), appending widget
kdenlive(3753): Shortcut for KAction  "monitor_play_zone" "Bereich abspielen" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(3753): Shortcut for KAction  "monitor_loop_zone" "Bereich wiederholen (Schleife)" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(3753) MainWindow::loadPlugins: // PARSING FIOLER:  "/usr/lib/kde4/"
kdenlive(3753) MainWindow::loadPlugins: // PARSING FIOLER:  "/usr/local/lib/kde4/"
kdenlive(3753) MainWindow::loadPlugins: // FOUND PLUGIN:  "libkdenlive_sampleplugin.so" =  "/usr/local/lib/kde4/libkdenlive_sampleplugin.so"
kdenlive(3753) MainWindow::addToMenu: // ADD to MENU ("Countdown", "Noise")
kdenlive(3753) KdenliveDoc::setProfilePath: KDEnnlive document, init timecode from path:  "hdv_1080_50i" ,   25
kdenlive(3753) KdenliveDoc::KdenliveDoc: KDEnnlive document, init timecode:  25
kdenlive(3753) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  4 , DURATION:  0
kdenlive(3753) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  3 , DURATION:  0
kdenlive(3753) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  2 , DURATION:  0
kdenlive(3753) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  1 , DURATION:  0
kdenlive(3753) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  0 , DURATION:  0
kdenlive(3753) TrackView::parseDocument: ///////////  TOTAL PROJECT DURATION:  300
kdenlive(3753) Render::setSceneList: // NEW SCENE LIST DURATION SET TO:  0
KCrash: Application 'kdenlive' crashing...
sock_file=/home/simon/.kde4/socket-sFreezer/kdeinit4__0

 

gdb shows that::

$ gdb kdenlive
GNU gdb 6.8-debian           
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.          
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"  
and "show warranty" for details.                                            
This GDB was configured as "i486-linux-gnu"...                              
(gdb) run                                                                   
Starting program: /usr/local/bin/kdenlive                                   
[Thread debugging using libthread_db enabled]                               
[New Thread 0xb5ee56c0 (LWP 3807)]                                          
kdenlive(3807) MainWindow::parseProfiles: RESULTING MLT PATH:  "/usr/share/mlt/profiles/"
mlt_repository.c, mlt_repository_init: failed to dlopen /usr/local/lib/mlt/libmltavformat.so
kdenlive(3807) initEffects::parseEffectFiles: //  INIT EFFECT SEARCH                       
kdenlive(3807) Render::Render: //////////  USING PROFILE:  hdv_1080_50i                   
kdenlive(3807) Monitor::Monitor: /////// BUILDING MONITOR, ID:  60817688                   
kdenlive(3807) Render::Render: //////////  USING PROFILE:  hdv_1080_50i                   
kdenlive(3807) Monitor::Monitor: /////// BUILDING MONITOR, ID:  60817788                   
kdenlive(3807) RecMonitor::RecMonitor: /////// BUILDING MONITOR, ID:  60817833             
QStatusBar::insertPermanentWidget: Index out of range (5), appending widget                
QStatusBar::insertPermanentWidget: Index out of range (7), appending widget                
kdenlive(3807): Shortcut for KAction  "monitor_play_zone" "Bereich abspielen" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(3807): Shortcut for KAction  "monitor_loop_zone" "Bereich wiederholen (Schleife)" set with QShortcut::setShortcut()! See KAction documentation.
kdenlive(3807) MainWindow::loadPlugins: // PARSING FIOLER:  "/usr/lib/kde4/"                                                                            
kdenlive(3807) MainWindow::loadPlugins: // PARSING FIOLER:  "/usr/local/lib/kde4/"                                                                      
kdenlive(3807) MainWindow::loadPlugins: // FOUND PLUGIN:  "libkdenlive_sampleplugin.so" =  "/usr/local/lib/kde4/libkdenlive_sampleplugin.so"            
kdenlive(3807) MainWindow::addToMenu: // ADD to MENU ("Countdown", "Noise")                                                                             
kdenlive(3807) KdenliveDoc::setProfilePath: KDEnnlive document, init timecode from path:  "hdv_1080_50i" ,   25                                         
kdenlive(3807) KdenliveDoc::KdenliveDoc: KDEnnlive document, init timecode:  25                                                                         
kdenlive(3807) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  4 , DURATION:  0                                                         
kdenlive(3807) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  3 , DURATION:  0                                                         
kdenlive(3807) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  2 , DURATION:  0                                                         
kdenlive(3807) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  1 , DURATION:  0                                                         
kdenlive(3807) TrackView::slotAddProjectTrack: *************  ADD DOC TRACK  0 , DURATION:  0                                                         
kdenlive(3807) TrackView::parseDocument: ///////////  TOTAL PROJECT DURATION:  300                                                                      
kdenlive(3807) Render::setSceneList: // NEW SCENE LIST DURATION SET TO:  0

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb5ee56c0 (LWP 3807)]
mlt_properties_fetch (this=0x0, name=0xb3ec4c00 "forced") at mlt_properties.c:346
346             property_list *list = this->local;
Current language:  auto; currently c
(gdb) thread apply all bt

Thread 1 (Thread 0xb5ee56c0 (LWP 3807)):
#0  mlt_properties_fetch (this=0x0, name=0xb3ec4c00 "forced") at mlt_properties.c:346
#1  0xb7ff186f in mlt_properties_set_int (this=0x0, name=0xb3ec4c00 "forced", value=3) at mlt_properties.c:736
#2  0xb3ec3d1c in consumer_start (parent=0x9775870) at consumer_sdl_still.c:159
#3  0xb7ffa7d4 in mlt_consumer_start (this=0x9775870) at mlt_consumer.c:340
#4  0xb3ec2008 in consumer_start (parent=0x96dee40) at consumer_sdl_preview.c:208
#5  0xb7ffa7d4 in mlt_consumer_start (this=0x96dee40) at mlt_consumer.c:340
#6  0xb7fce960 in Mlt::Consumer::start () from /usr/local/lib/libmlt++.so.1
#7  0x080e412c in Render::connectPlaylist (this=0x96c6d98) at /data/cworkspace/kdenlive-kde4/src/renderer.cpp:924
#8  0x0810219c in Render::setSceneList (this=0x96c6d98, playlist=
      {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 16060}, alloc = 0, size = 0, data = 0x83674ba, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 111}, alloc = 0, size = 0, data = 0xb747416e, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0xbf81d068, static codecForCStrings = 0x0}, position=0) at /data/cworkspace/kdenlive-kde4/src/renderer.cpp:834
#9  0x08115f05 in KdenliveDoc::setSceneList (this=0x9aa00a8) at /data/cworkspace/kdenlive-kde4/src/kdenlivedoc.cpp:204
#10 0x0813c1b5 in TrackView (this=0x9ab0790, doc=0x9aa00a8, parent=0x94aec68) at /data/cworkspace/kdenlive-kde4/src/trackview.cpp:81
#11 0x080bc10f in MainWindow::newFile (this=0x94aec68, showProjectSettings=false) at /data/cworkspace/kdenlive-kde4/src/mainwindow.cpp:1096
#12 0x080bf932 in MainWindow (this=0x94aec68, MltPath=@0xbf81d4bc, Url=@0xbf81d49c, parent=0x0) at /data/cworkspace/kdenlive-kde4/src/mainwindow.cpp:366
#13 0x080a5a62 in main (argc=1, argv=0xbf81d604) at /data/cworkspace/kdenlive-kde4/src/main.cpp:71

 

Simon

kdenlive(3807) MainWindow::parseProfiles: RESULTINGÂ MLT PATH: "/usr/share/mlt/profiles/"
mlt_repository.c, mlt_repository_init: failed to dlopen /usr/local/lib/mlt/libmltavformat.so

Looks like you have several versions of MLT installed: one in /usr and one in /usr/local
Those 2 install are conflicting. You need to remove one of them.

To remove your MLT install in /usr, remove the following:

/usr/share/mlt
/usr/lib/libmlt*
/usr/lib/mlt
/usr/include/mlt
/usr/bin/inigo

Also, make sure that you don't also have 2 installs of MLT++...

Great! that fixed it for me.

Can i just install over the old version after recompilation? make uninstall works correctly?

Thank you!

0.7.1 freakin rocks!!:)

I guess the double MLT install was the original problem. Also here removing the build directory solved the problem. :)

 

thanks

Simon

I found the cause of the error:
undefined reference to `ThumbCreator::~ThumbCreator()

Fixed now in svn, I hope it works for everyone, otherwise let me know.

regards
jb

Works here, cool, thanks!

Simon