Ок. Итак.
Задача: написать media player, который может проигрывать mp3, ogg, wma, wav. Плеер должен работать в windows ce (only core licence). Использовать можно только LGPL библиотеки (или с похожей лицензией).
Что делал: Решил посмотреть сэмпл от wxWidgets (2.8.
под названием mediaplayer. Библиотеку собрал в VS2008 под Pocket PC 2003 SDK (пока нет реального девайса с windows ce). Библиотека собралась не без проблем, сначала выругалась на отсутствие функции VkScanKey, для которой я написал заглушку. Потом сэмпл не захотел линковаться с wxwidgets ругаясь на что-то связанное с mediaBanckend. Поигравшись флажками и пересобрав библиотеку, получилось избавиться от этих ошибок, но появились другие неразрешенный ссылки, пришлось написать для них заглушки:
Code: Select all
bool __cdecl wxConvertVariantToOle(class wxVariant const &,struct tagVARIANT &)
{
return false;
}
bool __cdecl wxConvertOleToVariant(struct tagVARIANT const &,class wxVariant &)
{
return false;
}
В этих функциях ставил брек поинты - программа туда не попадает.
собственно ошибка возникает здесь:
Code: Select all
bool bOK = m_mediactrl->Create(this, wxID_MEDIACTRL, wxEmptyString,
wxDefaultPosition, wxDefaultSize, 0,
szBackend);
wxASSERT_MSG(bOK, wxT("Could not create media control!"));
т.е. функция Create возвращает фолс, так как не находит зарегестрированный класс в hash_map (может я чего не так понял?!). Одннако, класс wxMediaBackend там регистрируется, может это не то?! Если вместо szBackend передать "wxMediaBackend", то происходит просто крэш.
В чем может быть проблема?