aMule Bug Tracker - aMule
View Issue Details
0001027aMuleExternal Connpublic2006-12-14 16:542008-02-22 03:19
sefer tov 
 
normalmajoralways
closedopen 
2.1.3 
 
Any
0001027: CVS aMule won't compile with newer gcc
Hi,

I'm using gcc 4.1.x and wxWindows 2.6.3 on the latest Mandriva distribution trying to compile the CVS aMule, but I'm getting this failure message.
Hope you guys could find a fix for this.

if g++ -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/lib/wx/include/ -I/usr/lib/wx/include/gtk2-ansi-release-2.6 -I/usr/include/wx-2.6 -DGTK_NO_CHECK_CASTS -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -DNO_GCC_PRAGMA -I./libs -Ilibs -DAMULE_INSTALL_PREFIX="\"/opt/aMule-2.1.4\"" -DAMULE_LOCALEDIR="\"/opt/aMule-2.1.4/share/locale\"" -DUSE_EMBEDDED_CRYPTO -W -Wall -Wshadow -Wundef -g -ggdb -fno-inline -D__DEBUG__ -fmessage-length=0 -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC -DUSE_WX_EXTENSIONS -MT amule-ExternalConn.o -MD -MP -MF ".deps/amule-ExternalConn.Tpo" -c -o amule-ExternalConn.o `test -f 'ExternalConn.cpp' || echo './'`ExternalConn.cpp; \
        then mv -f ".deps/amule-ExternalConn.Tpo" ".deps/amule-ExternalConn.Po"; else rm -f ".deps/amule-ExternalConn.Tpo"; exit 1; fi
In file included from ExternalConn.h:31,
                 from ExternalConn.cpp:34:
./libs/ec/ECSpecialTags.h:28:2: warning: #warning Kry - Preferences packet derived from packet, and that's ok, but shouldn't be here because this is a tag file and forces a stupid include
In file included from CFile.h:29,
                 from PartFile.h:31,
                 from ExternalConn.cpp:38:
SafeFile.h:201:2: warning: #warning DOCS
ExternalConn.cpp:846:2: warning: #warning Kry - lfroen, please fix this to work with 64bits
./libs/ec/ECSpecialTags.h: In member function ‘wxString CEC_PartFile_Tag::PartMetName()’:
./libs/ec/ECSpecialTags.h:218: warning: format ‘%03u’ expects type ‘unsigned int’, but argument 2 has type ‘uint64_t’
ExternalConn.cpp: In static member function ‘static CECPacket* ExternalConn::Authenticate(const CECPacket*)’:
ExternalConn.cpp:212: error: call of overloaded ‘CECTag(<anonymous enum>, const char [103])’ is ambiguous
./libs/ec/ECTag.h:117: note: candidates are: CECTag::CECTag(ec_tagname_t, const wxString&)
./libs/ec/ECTag.h:113: note: CECTag::CECTag(ec_tagname_t, const std::string&)
./libs/ec/ECTag.h:111: note: CECTag::CECTag(ec_tagname_t, uint64_t) <near match>
./libs/ec/ECTag.h:110: note: CECTag::CECTag(ec_tagname_t, uint32_t) <near match>
./libs/ec/ECTag.h:109: note: CECTag::CECTag(ec_tagname_t, uint16_t) <near match>
./libs/ec/ECTag.h:108: note: CECTag::CECTag(ec_tagname_t, uint8_t) <near match>
ExternalConn.cpp:222: error: call of overloaded ‘CECTag(<anonymous enum>, const char [62])’ is ambiguous
./libs/ec/ECTag.h:117: note: candidates are: CECTag::CECTag(ec_tagname_t, const wxString&)
./libs/ec/ECTag.h:113: note: CECTag::CECTag(ec_tagname_t, const std::string&)
./libs/ec/ECTag.h:111: note: CECTag::CECTag(ec_tagname_t, uint64_t) <near match>
./libs/ec/ECTag.h:110: note: CECTag::CECTag(ec_tagname_t, uint32_t) <near match>
./libs/ec/ECTag.h:109: note: CECTag::CECTag(ec_tagname_t, uint16_t) <near match>
./libs/ec/ECTag.h:108: note: CECTag::CECTag(ec_tagname_t, uint8_t) <near match>
ExternalConn.cpp:228: error: call of overloaded ‘CECTag(<anonymous enum>, const char [23])’ is ambiguous
./libs/ec/ECTag.h:117: note: candidates are: CECTag::CECTag(ec_tagname_t, const wxString&)
./libs/ec/ECTag.h:113: note: CECTag::CECTag(ec_tagname_t, const std::string&)
./libs/ec/ECTag.h:111: note: CECTag::CECTag(ec_tagname_t, uint64_t) <near match>
./libs/ec/ECTag.h:110: note: CECTag::CECTag(ec_tagname_t, uint32_t) <near match>
./libs/ec/ECTag.h:109: note: CECTag::CECTag(ec_tagname_t, uint16_t) <near match>
./libs/ec/ECTag.h:108: note: CECTag::CECTag(ec_tagname_t, uint8_t) <near match>
ExternalConn.cpp:236: error: call of overloaded ‘CECTag(<anonymous enum>, const char [30])’ is ambiguous
./libs/ec/ECTag.h:117: note: candidates are: CECTag::CECTag(ec_tagname_t, const wxString&)
./libs/ec/ECTag.h:113: note: CECTag::CECTag(ec_tagname_t, const std::string&)
./libs/ec/ECTag.h:111: note: CECTag::CECTag(ec_tagname_t, uint64_t) <near match>
./libs/ec/ECTag.h:110: note: CECTag::CECTag(ec_tagname_t, uint32_t) <near match>
./libs/ec/ECTag.h:109: note: CECTag::CECTag(ec_tagname_t, uint16_t) <near match>
./libs/ec/ECTag.h:108: note: CECTag::CECTag(ec_tagname_t, uint8_t) <near match>
ExternalConn.cpp:240: error: call of overloaded ‘CECTag(<anonymous enum>, const char [48])’ is ambiguous
./libs/ec/ECTag.h:117: note: candidates are: CECTag::CECTag(ec_tagname_t, const wxString&)
./libs/ec/ECTag.h:113: note: CECTag::CECTag(ec_tagname_t, const std::string&)
./libs/ec/ECTag.h:111: note: CECTag::CECTag(ec_tagname_t, uint64_t) <near match>
./libs/ec/ECTag.h:110: note: CECTag::CECTag(ec_tagname_t, uint32_t) <near match>
./libs/ec/ECTag.h:109: note: CECTag::CECTag(ec_tagname_t, uint16_t) <near match>
./libs/ec/ECTag.h:108: note: CECTag::CECTag(ec_tagname_t, uint8_t) <near match>
ExternalConn.cpp:243: error: call of overloaded ‘CECTag(<anonymous enum>, const char [4])’ is ambiguous
./libs/ec/ECTag.h:117: note: candidates are: CECTag::CECTag(ec_tagname_t, const wxString&)
./libs/ec/ECTag.h:113: note: CECTag::CECTag(ec_tagname_t, const std::string&)
./libs/ec/ECTag.h:111: note: CECTag::CECTag(ec_tagname_t, uint64_t) <near match>
./libs/ec/ECTag.h:110: note: CECTag::CECTag(ec_tagname_t, uint32_t) <near match>
./libs/ec/ECTag.h:109: note: CECTag::CECTag(ec_tagname_t, uint16_t) <near match>
./libs/ec/ECTag.h:108: note: CECTag::CECTag(ec_tagname_t, uint8_t) <near match>
ExternalConn.cpp: In function ‘CECPacket* Get_EC_Response_PartFile_Cmd(const CECPacket*)’:
ExternalConn.cpp:572: error: call of overloaded ‘CECTag(<anonymous enum>, const char [31])’ is ambiguous
./libs/ec/ECTag.h:117: note: candidates are: CECTag::CECTag(ec_tagname_t, const wxString&)
./libs/ec/ECTag.h:113: note: CECTag::CECTag(ec_tagname_t, const std::string&)
./libs/ec/ECTag.h:111: note: CECTag::CECTag(ec_tagname_t, uint64_t) <near match>
./libs/ec/ECTag.h:110: note: CECTag::CECTag(ec_tagname_t, uint32_t) <near match>
./libs/ec/ECTag.h:109: note: CECTag::CECTag(ec_tagname_t, uint16_t) <near match>
./libs/ec/ECTag.h:108: note: CECTag::CECTag(ec_tagname_t, uint8_t) <near match>

etc. etc. etc.

-- Sefer.
No tags attached.
Issue History
2006-12-14 16:54sefer tovNew Issue
2006-12-14 16:54sefer tovOperating System => Any
2006-12-16 16:56KryNote Added: 0002194
2006-12-16 21:17pcmasterNote Added: 0002195
2007-01-04 15:55gaffaNote Added: 0002215
2007-01-04 17:13gaffaNote Edited: 0002215
2008-02-22 03:19XaignarStatusnew => closed
2008-02-22 03:19XaignarNote Added: 0002647

Notes
(0002194)
Kry   
2006-12-16 16:56   
Weird, I use gcc (GCC) 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) and it works.
(0002195)
pcmaster   
2006-12-16 21:17   
I use Gentoo and amule compiles ok with gcc-4.1.1 (gcc-4.1.1-r1 ebuild)
(0002215)
gaffa   
2007-01-04 15:55   
(edited on: 2007-01-04 17:13)
It does not look like an aMule bug "as such". I think it is GCC 4.1.xs pedantic behaviour which is "disabled" in distributions where it doesn't complain.

It seems like your compiler is in doubt whether to use wxString or std::string for the string literal passed on to the constructor. In my world the natural behaviour for the compiler would be to use the "built-in" STL type std::string.

Try to compile with -fpermissive flag.

It's just a hunch. Try asking on the GCC mailing list.

edited on: 01-04-07 17:13
(0002647)
Xaignar   
2008-02-22 03:19   
Closing due to lack of reponse.