Я реализовал простой класс ostream и streambuf. По какой-то причине он падает, когда я пытаюсь создать экземпляр объекта AndroidLogOStream.C++ - наследование ostream сбоев на Android, но не windows
Примечания: У меня есть stlport_static в моем Application.mk
class AndroidLogStreamBuf : public std::streambuf
{
public:
inline AndroidLogStreamBuf() : std::streambuf()
{
//std::cout << "asdfg";
}
inline ~AndroidLogStreamBuf()
{
}
};
class AndroidLogOStream : public std::ostream
{
public:
inline AndroidLogOStream() : std::ostream(&mBuf)
{
}
inline ~AndroidLogOStream()
{
}
private:
AndroidLogStreamBuf mBuf;
};
Это скелетное, и он прекрасно работает на окнах. Он отлично компилируется на Android, но по какой-то причине он падает. В последней строке он пытается выполнить в _streambuf.c: 46:
template <class _CharT, class _Traits>
locale
basic_streambuf<_CharT, _Traits>::pubimbue(const locale& __loc) {
this->imbue(__loc); <---- crash
locale __tmp = _M_locale;
_M_locale = __loc;
return __tmp;
}
Предоставленный Я еще совсем запутался iostreams, но это должно быть что-то неправильно с конструктором, я предполагаю, что это не действует?
См. [Этот старый ответ] (http://stackoverflow.com/a/528661/440558) для некоторых полезных ссылок. –
почему теги android и C++? я могу получить C++ один, но не другой! –
Я запускаю его на Android с андроидом ndk: p – KaiserJohaan