我需要用原始源代码替换allocator。我从PE导出表中提取导出的方法,并面对奇怪的冗长分配器,其中STL容器在原始源代码中使用。即如果源代码是:
typedef std::list<std::basic_string<_TCHAR> > TokenList;
EXPORTS_API const TokenList& getLiteralList( );
从我得到的导出表:
std::list<class std::basic_string<unsigned short, std::char_traits<unsigned short>,class
std::allocator<unsigned short> >,class std::allocator<class std::basic_string<unsigned
short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > > >
const & __thiscall CExpressionTokenizer::getLiteralList(void)
如何从上面冗长的分配器回溯到原始源代码? (typedef增加了更多的大小。)
此致
乌斯曼
答案 0 :(得分:1)
我认为您的意思是希望能够从导出表中确定更简洁的类型名称。标准分配器(std::allocator
)是大多数标准容器类模板中allocator参数的默认模板参数,因此您只需从模板特化中删除整个allocator参数,即可得到相同类型的简单表达式。 / p>
E.g。
std::list<class std::basic_string<unsigned short, std::char_traits<unsigned short>,class
std::allocator<unsigned short> >,class std::allocator<class std::basic_string<unsigned
short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > > >
const & __thiscall CExpressionTokenizer::getLiteralList(void)
变为
std::list<class std::basic_string<unsigned short, std::char_traits<unsigned short> > >
const & __thiscall CExpressionTokenizer::getLiteralList(void)
答案 1 :(得分:0)
我相信你在谈论解码错误信息?试试STLFilt。