libkexiv2 and digikam core fixed on svn. <br><br>Because we have a broken binary compatibility with shared lib, please update and test by this way :<br><br>- cleanup all : Exiv2, libkexiv2, kipi-plugins, digiKam (make distclean).
<br>- checkout source code everywhere.<br>- re-compile and install (using autotools included).<br><br>If you not do it, digiKam will crash... I'm sure, i have tested here...<br><br>Gilles<br><br><div><span class="gmail_quote">
2007/3/15, Gilles Caulier <<a href="mailto:caulier.gilles@gmail.com">caulier.gilles@gmail.com</a>>:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br><br><div><span class="gmail_quote">2007/3/14, Pedro Venda <<a href="mailto:pjvenda@pjvenda.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">pjvenda@pjvenda.org</a>>:</span><div><span class="e" id="q_111545dfa240ed88_1">
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi everyone,<br><br>I am facing another compilation error, for which I do not have enough C++<br>experience to handle. I am compiling digikam along with trunk/exiv2<br>and trunk/extragear/libs, I have updated the svn copy of digikam several
<br>times and even rm -rf and rechecked the whole trees again to rule out any<br>mess I might have made.<br><br>The following error happens when compiling several objects from<br>digikam/libs/widgets/metadata/:<br><br>if /bin/sh ../../../../libtool --silent --tag=CXX --mode=compile
<br>g++ -DHAVE_CONFIG_H -I. -I. -I../../../.. -I../../../../digikam/libs/dmetadata -I../../../../digikam/libs/dimg -I/usr/local/digikam-trunk/include -I../../../../digikam/digikam -I/usr/kde/3.5/include -I/usr/qt/3/include -I. -DQT_THREAD_SUPPORT -D_REENTRANT -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -O2 -I/usr/local/digikam-trunk/include -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -DQT_CLEAN_NAMESPACE -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -fexceptions -MT
<br>iptcwidget.lo -MD -MP -MF ".deps/iptcwidget.Tpo" -c -o iptcwidget.lo<br>iptcwidget.cpp; \<br> then mv -f ".deps/iptcwidget.Tpo" ".deps/iptcwidget.Plo"; else<br>rm -f ".deps/iptcwidget.Tpo"; exit 1; fi
<br>iptcwidget.cpp: In member function 'virtual bool<br>Digikam::IptcWidget::decodeMetadata()':<br>iptcwidget.cpp:159: error: request for member 'c_str'<br>in '((Exiv2::Error*)e)->Exiv2::Error::what()', which is of non-class
<br>type 'const char*'<br>iptcwidget.cpp: In member<br>function 'virtual QString Digikam::IptcWidget::getTagTitle(const QString&)':<br>iptcwidget.cpp:188: error: request for member 'c_str'<br>
in '((Exiv2::Error*)e)->Exiv2::Error::what()', which is of non-class
<br>type 'const char*'<br>iptcwidget.cpp: In member<br>function 'virtual QString Digikam::IptcWidget::getTagDescription(const<br>QString&)':<br>iptcwidget.cpp:205: error: request for member 'c_str'
<br>in '((Exiv2::Error*)e)->Exiv2::Error::what()', which is of non-class<br>type 'const char*'<br>make[5]: *** [iptcwidget.lo] Error 1<br><br>I looked at the exiv2 error.hpp (exiv2-svn) header and I found that the method
<br>Exiv2::Error.what() already returns a (const char *) so c_str() is (probably)<br>not adequate. The affected source files were: iptcwidget.cpp, exifwidget.cpp,<br>gpswidget.cpp and makernotewidget.cpp.<br><br>This what() method differs in the way it is being prototyped/implemented
<br>between exiv2-svn and exiv2-0.12 (error.hpp).<br>exiv2-svn is:<br> virtual const char* what() const throw() { return msg_.c_str(); }<br>exiv2-0.12 is:<br> virtual std::string what() const;<br><br>The call to c_str() might work if called from a std::string object, but not
<br>from a const char * type variable (which is not even semantically correct).<br>If I remove the call to c_str() on the affected objects, digikam compiles<br>correctly but doesn't work. It starts and immediately after showing up the
<br>main screen, it segfaults with:<br><br>terminate called after throwing an instance of 'std::bad_alloc'<br> what(): St9bad_alloc</blockquote></span></div><div><br>Normal. You haven't patched libkexiv2 library used by digiKam.
<br><br>Actually, digiKam depand of both. In the future, only the libkexiv2 interface will be used.<br><br>Gilles</div></div><br>
</blockquote></div><br>