[SOLVED] Error integrating MyGui under Linux

Nodrev

16-02-2009 13:16:48

Hello,

I encounter an error while integrationg MyGui to my project under Linux.
Everything works fine under Windows, and i compiled the lib and the samples with no problems on linux.

Here comes the error:
In file included from /usr/local/include/MYGUI/MyGUI.h:59,
from ../../../Plugins/OgreVideo/include/UsulOgreInterface.h:9,
from ../../../Plugins/OgreVideo/include/UsulOgreFenetre.h:14,
from ../src/UsulOgreFenetre.cpp:1:
/usr/local/include/MYGUI/MyGUI_FontManager.h: In member function ‘MyGUI::EnumeratorFontPtr MyGUI::FontManager::getEnumerator()’:
/usr/local/include/MYGUI/MyGUI_FontManager.h:71: erreur: no matching function for call to ‘MyGUI::Enumerator<__gnu_cxx::hash_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource>, __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<Ogre::SharedPtr<Ogre::Resource> > > >::Enumerator(std::tr1::unordered_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource>, std::tr1::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource> > > >&)’
/usr/local/include/MYGUI/MyGUI_Enumerator.h:74: note: candidats sont: MyGUI::Enumerator<T>::Enumerator(typename T::const_iterator, typename T::const_iterator) [with T = __gnu_cxx::hash_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource>, __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<Ogre::SharedPtr<Ogre::Resource> > >]
/usr/local/include/MYGUI/MyGUI_Enumerator.h:67: note: MyGUI::Enumerator<T>::Enumerator(const T&) [with T = __gnu_cxx::hash_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource>, __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<Ogre::SharedPtr<Ogre::Resource> > >]
/usr/local/include/MYGUI/MyGUI_Enumerator.h:64: note: MyGUI::Enumerator<T>::Enumerator() [with T = __gnu_cxx::hash_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource>, __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<Ogre::SharedPtr<Ogre::Resource> > >]
/usr/local/include/MYGUI/MyGUI_Enumerator.h:62: note: MyGUI::Enumerator<__gnu_cxx::hash_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource>, __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<Ogre::SharedPtr<Ogre::Resource> > > >::Enumerator(const MyGUI::Enumerator<__gnu_cxx::hash_map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, Ogre::SharedPtr<Ogre::Resource>, __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<Ogre::SharedPtr<Ogre::Resource> > > >&)
make[3]: *** [UsulOgreFenetre.lo] Erreur 1

As you can see, the problem occurs when including the "MyGui.h" file.
Any ideas?

Five_stars

16-02-2009 13:24:29

What version do you use? From SVN trunk?

Nodrev

16-02-2009 13:27:55

yep SVN trunk, but i got the same problem with v2.2.

Nodrev

17-02-2009 08:19:22

Hi,

I finally found where it comes from (hard to found bug):
I use another library than Ogre in my project, which always define "HashMap". Ogre is defining this in Ogre::String if i remember well...
So, renaming the HasMap macro in tis library solves the conflict.