То, что вы видите, является ошибкой компоновщика.Все отлично компилируется, а затем, когда компоновщик начинает сшивать код, ему не хватает объекта, который определяет функциональность оператора хеширования std::tr1::hash<ObjectGuid>::operator()
.Это специализация шаблона, позволяющая использовать этот объект в качестве уникального ключа на карте (или хэш-наборе).
Шаблон для хэш-функции указан здесь .На первый взгляд, я не понял, почему он не должен ссылаться, но потом я понял, что компоновщик ищет std::tr1::hash<ObjectGuid>
вместо std::hash<ObjectGuid>
.По сути, похоже, что ваша библиотека STL использует TR1 , которая является более старой стандартной версией C ++ 11.
Ваша первая попытка должна состоять в том, чтобы выяснить, как указать, что вашКомпилятор использует более новую версию библиотеки STL.Вы должны иметь возможность добавить -std=c++11
к флагам CMAKE C ++ (вместо -std = c ++ 0X).Означает ли это, что нужно отредактировать файл CMakeLists.txt, чтобы включить флаг, или убедиться, что ваш компилятор был установлен с более современной версией STL.
Это должно решить проблему.Я могу придумать другое решение, но подозреваю, что вы получите больше ошибок, связавшись со старой версией STL.