- 论坛徽章:
- 0
|
本帖最后由 hsdrhsdr 于 2014-01-18 15:25 编辑
项目用到hash_map,在编译时出现下面错误:
n file included from /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/hash_map:62,
from /root/dev/src/network/EventList.h:13,
from /root/dev/src/network/EventList.cpp:9:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/hashtable.h: In member function ‘size_t __gnu_cxx::hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>::_M_bkt_num_key(const _Key&, size_t) const [with _Val = std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, event*>, _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _HashFcn = __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _ExtractKey = std::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, event*> >, _EqualKey = std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<event*>]’:
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/hashtable.h:582: instantiated from ‘size_t __gnu_cxx::hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>::_M_bkt_num_key(const _Key&) const [with _Val = std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, event*>, _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _HashFcn = __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _ExtractKey = std::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, event*> >, _EqualKey = std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<event*>]’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/hashtable.h:865: instantiated from ‘size_t __gnu_cxx::hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>::erase(const _Key&) [with _Val = std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, event*>, _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _HashFcn = __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _ExtractKey = std::_Select1st<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, event*> >, _EqualKey = std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<event*>]’
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/ext/hash_map:233: instantiated from ‘typename __gnu_cxx::hashtable<std::pair<const _Key, _Tp>, _Key, _HashFn, std::_Select1st<std::pair<const _Key, _Tp> >, _EqualKey, _Alloc>::size_type __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqualKey, _Alloc>::erase(const typename __gnu_cxx::hashtable<std::pair<const _Key, _Tp>, _Key, _HashFn, std::_Select1st<std::pair<const _Key, _Tp> >, _EqualKey, _Alloc>::key_type&) [with _Key = std::basic_string<char, std::char_traits<char>, std::allocator<char> >, _Tp = event*, _HashFn = __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _EqualKey = std::equal_to<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, _Alloc = std::allocator<event*>]’
/root/dev/src/network/EventList.cpp:54: instantiated from here
/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/hashtable.h:590: 错误:对‘(const __gnu_cxx::hash<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >) (const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)’的调用没有匹配
make[2]: *** [CMakeFiles/devServer.dir/src/network/EventList.cpp.o] 错误 1
make[1]: *** [CMakeFiles/devServer.dir/all] 错误 2
make: *** [all] 错误 2
EventList代码如下:
#include "EventList.h"
#include <string.h>
#include <stdlib.h>
EventList::EventList()
{
}
int EventList::set(char *type, int typeLength, event *evn)
{
char key[64];
memset(key, 0, 64);
memcpy(key, evn->imei, evn->imeiLength);
memcpy(key+evn->imeiLength, type, typeLength);
std::string strKey = key;
this->devcmdList[strKey] = evn;
return 0;
}
event *EventList::get(char *type, int typeLength, char *imei, int imeiLength)
{
char key[64];
memset(key, 0, 64);
memcpy(key, imei, imeiLength);
memcpy(key+imeiLength, type, typeLength);
std::string strKey = key;
event *evn = this->devcmdList[strKey];
return evn;
}
int EventList::del(char *type, int typeLength, char *imei, int imeiLength)
{
char key[64];
memset(key, 0, 64);
memcpy(key, imei, imeiLength);
memcpy(key+imeiLength, type, typeLength);
std::string strKey = key;
event *evn = this->devcmdList[strKey];
if (evn != NULL) {
this->devcmdList.erase(strKey);
free(evn);
}
return 0;
}
一大堆错误信息,看不明白,不过在mac平台下编译却可以正常运行 |
|