Bug #552
Build failure under Mac OS X 10.3.9
0%
Description
The build fails with the following error:
g++ -O2 -Wall -Wcast-align -Wpointer-arith -Wformat-security -Wmissing-format-attribute -Woverloaded-virtual -W -I. -I/usr/local/include -I/usr/local/include -DEXV_LOCALEDIR=\"/usr/local/share/locale\" -I../xmpsdk/include -c convert.cpp -fno-common -DPIC -o .libs/convert.o
convert.cpp: In member function `void Exiv2::Converter::cnvXmpValueToIptc(const
char*, const char*)':
convert.cpp:1082: error: type specifier omitted for parameter
convert.cpp:1082: error: parse error before numeric constant
convert.cpp:1083: error: request for member `setValue' in `Exiv2::id(...)',
which is of non-aggregate type `Exiv2::Iptcdatum ()(...)'
convert.cpp:1084: error: no matching function for call to `Exiv2::IptcData::add
(Exiv2::Iptcdatum (&)(...))'
iptc.hpp:242: error: candidates are: int Exiv2::IptcData::add(const
Exiv2::IptcKey&, Exiv2::Value*)
iptc.hpp:249: error: int Exiv2::IptcData::add(const
Exiv2::Iptcdatum&)
make[1]: * [convert.o] Error 1
make: * [all] Error 2
Additional information:
Build of version 0.14 was successful under this OS version.
Files
History
Updated by Andreas Huggel over 13 years ago
Attachment rmconvert.patch is a quick workaround for the problem: it removes the convert functionality from the library. XMP sidecar files will only deal with XMP data in this patch applied.
Updated by Andreas Huggel over 13 years ago
Attachment firsttry.patch is an attempt to fix the problem. I have had a very similar error message here earlier (on Linux/g++-4.3) and it went away when I used a 0 pointer argument in the Iptcdatum constructor on line 1082.
So if firsttry.patch doesn't help, please also try s/key/key, 0/ on that line.
But I still do not understand what the compiler is trying to do here and why it doesn't get the Iptcdatum and IptcKey constructors right.
Updated by marius - over 13 years ago
The firsttry.patch works, w/o the "key" replacement.
Thanks!
Updated by Andreas Huggel over 13 years ago
~993: Apparently, this is "C++'s most vexing parse":