Не работает большинство примеро Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
movaxbx777
Earned a small fee
Earned a small fee
Posts: 12
Joined: Tue Oct 16, 2007 8:20 am

Не работает большинство примеро

Post by movaxbx777 » Tue Aug 26, 2008 11:56 am

Собрал wx_mono.lib и пытаюсь посмотреть сэмплы, работают только самые простые примеры. С остальными практически одна и таже ошибка "Could not create media control. Do you want to stop the program?"

Ошибка возникает вот здесь. Стандартный семпл, я ничего не менял. (похожие ошибки возникают и с другими примерами)

Code: Select all

bool bOK = m_mediactrl->Create(this, wxID_MEDIACTRL, wxEmptyString,
                                    wxDefaultPosition, wxDefaultSize, 0,
                                   szBackend);
В чем может быть проблема?

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Re: Не работает большинство приме

Post by tan » Tue Aug 26, 2008 12:55 pm

movaxbx777 wrote:Собрал wx_mono.lib и пытаюсь посмотреть сэмплы, работают только самые простые примеры. С остальными практически одна и таже ошибка "Could not create media control. Do you want to stop the program?"

Ошибка возникает вот здесь. Стандартный семпл, я ничего не менял. (похожие ошибки возникают и с другими примерами)

Code: Select all

bool bOK = m_mediactrl->Create(this, wxID_MEDIACTRL, wxEmptyString,
                                    wxDefaultPosition, wxDefaultSize, 0,
                                   szBackend);
В чем может быть проблема?
Че то я не понял насчет "остальных" примеров. Реально wxMediaCtrl используется только в одном - mediaplayer. Как может возникать эта "одна и та же ошибка" в других сэмплах, хоть убей - не пойму :)
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

movaxbx777
Earned a small fee
Earned a small fee
Posts: 12
Joined: Tue Oct 16, 2007 8:20 am

Re: Не работает большинство приме

Post by movaxbx777 » Tue Aug 26, 2008 1:21 pm

Че то я не понял насчет "остальных" примеров. Реально wxMediaCtrl используется только в одном - mediaplayer. Как может возникать эта "одна и та же ошибка" в других сэмплах, хоть убей - не пойму :)
Я сказал "похожие". Т.к. на PC у меня нет вообще проблем, то я предположил, что эти ошибки могут быть связаны.

В других примерах другие проблемы, например в примере Display: "Can't load symbol from unloaded library"

много ошибок вида "error in SomeFunc(). Do you want to stop application?"

В общем, для меня сейчас важен только media player. Можно это как-то пофиксить? подскажите хоть направление куда копать

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Re: Не работает большинство приме

Post by tan » Tue Aug 26, 2008 1:27 pm

movaxbx777 wrote: Т.к. на PC у меня нет вообще проблем, то я предположил, что эти ошибки могут быть связаны.
Все равно не понял - на РС проблем нет, а где есть? Из поста ничего не понятно.
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

movaxbx777
Earned a small fee
Earned a small fee
Posts: 12
Joined: Tue Oct 16, 2007 8:20 am

Re: Не работает большинство приме

Post by movaxbx777 » Tue Aug 26, 2008 1:29 pm

Все равно не понял - на РС проблем нет, а где есть? Из поста ничего не понятно.
Извиняюсь, тема обрезана :( проблемы при запуске на pocket PC. А PC - это настольный комп.

tan
Moderator
Moderator
Posts: 1471
Joined: Tue Nov 14, 2006 7:58 am
Location: Saint-Petersburg, Russia

Re: Не работает большинство приме

Post by tan » Tue Aug 26, 2008 2:55 pm

movaxbx777 wrote:проблемы при запуске на pocket PC
Ok, теперь понял :) Но, боюсь, помочь не смогу (по крайней мере быстро). Никогда не юзал wxMediaCtrl под WinCE. Если будет время, может гляну :)
Да, а не работает под эмулятором или на реальном покете?
OS: Windows XP Pro
Compiler: MSVC++ 7.1
wxWidgets: 2.8.10

movaxbx777
Earned a small fee
Earned a small fee
Posts: 12
Joined: Tue Oct 16, 2007 8:20 am

Re: Не работает большинство приме

Post by movaxbx777 » Tue Aug 26, 2008 3:04 pm

Да, а не работает под эмулятором или на реальном покете?
Везде не работает.

User avatar
T-Rex
Moderator
Moderator
Posts: 1187
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Tue Aug 26, 2008 3:55 pm

Так, давай по порядку. Список <имя примера> - <текст ошибки> давай.
Ну а так навскидку, пробовал добавлять ресурсный файл и в нем #include <wx/msw/wx.rc> ?

movaxbx777
Earned a small fee
Earned a small fee
Posts: 12
Joined: Tue Oct 16, 2007 8:20 am

Post by movaxbx777 » Wed Aug 27, 2008 6:26 am

Ок. Итак.
Задача: написать media player, который может проигрывать mp3, ogg, wma, wav. Плеер должен работать в windows ce (only core licence). Использовать можно только LGPL библиотеки (или с похожей лицензией).
Что делал: Решил посмотреть сэмпл от wxWidgets (2.8.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", то происходит просто крэш.

В чем может быть проблема?

User avatar
T-Rex
Moderator
Moderator
Posts: 1187
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Wed Aug 27, 2008 10:21 am

Так.. ну а чего ж ты в исходник не смотришь? Я вот щаз открыл и гляжу, есть несколько медиа-бэкендов, из них под винду подходит только вроде который для WMP10 (но я чегой-то сомневаюсь что для WinCE оно будет работать, ну не важно, еще можно поковырять что там в GStreamer-бэкенде.. возможно есть шанс его под CE скомпилить, но ладно, не об этом сейчас речь..

Code: Select all

#if wxUSE_MEDIACTRL && wxUSE_ACTIVEX
Вот такое я вижу в сорцах нашего медиа-бэкенда... кажися WM не поддерживает активиксы.. как бы там ни было, иду в Go to declaration:

Code: Select all

/* check that MSW-specific options are defined too */
#ifndef wxUSE_ACTIVEX
#    ifdef wxABORT_ON_CONFIG_ERROR
#        error "wxUSE_ACTIVEX must be defined."
#    else
#        define wxUSE_ACTIVEX 0
#    endif
#endif /* !defined(wxUSE_ACTIVEX) */
вот чо вижу, поэтому медиа-бэкенд для WMP не компилится.. иду в setup.h

Code: Select all

/*
   un/redefine the options which we can't compile (after checking that they're
   defined
 */
#ifdef __WINE__
    /* apparently it doesn't compile under Wine, remove it/when it does */
    #if wxUSE_ACTIVEX
        #undef wxUSE_ACTIVEX
        #define wxUSE_ACTIVEX 0
    #endif // wxUSE_ACTIVEX
#endif // __WINE__


/* check settings consistency for MSW-specific ones */
#if !wxUSE_VARIANT
#   if wxUSE_ACTIVEX
#       ifdef wxABORT_ON_CONFIG_ERROR
#           error "wxActiveXContainer requires wxVariant"
#       else
#           undef wxUSE_ACTIVEX
#           define wxUSE_ACTIVEX 0
#       endif
#   endif

#   if wxUSE_OLE_AUTOMATION
#       ifdef wxABORT_ON_CONFIG_ERROR
#           error "wxAutomationObject requires wxVariant"
#       else
#           undef wxUSE_OLE_AUTOMATION
#           define wxUSE_OLE_AUTOMATION 0
#       endif
#   endif
#endif /* !wxUSE_VARIANT */
Ну и собсно вот, кажися оно и не должно работать.. столько всего не юзается в wxWinCE.. думаю можно посмотреть на родное API по воспроизведению видео.

movaxbx777
Earned a small fee
Earned a small fee
Posts: 12
Joined: Tue Oct 16, 2007 8:20 am

Post by movaxbx777 » Wed Aug 27, 2008 10:32 am

С родными API тоже не все так просто. Ладно, посмотрю в сторону SDL, уже есть первый работающий пример, правда не без косяков, но все же... Спасибо за помощь!

User avatar
T-Rex
Moderator
Moderator
Posts: 1187
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Wed Aug 27, 2008 11:55 am

Если не жалко, дай пример на SDL, интересно посмотреть?

movaxbx777
Earned a small fee
Earned a small fee
Posts: 12
Joined: Tue Oct 16, 2007 8:20 am

Post by movaxbx777 » Wed Aug 27, 2008 12:44 pm

T-Rex wrote:Если не жалко, дай пример на SDL, интересно посмотреть?
Собственно вот он
http://www.gmdsoft.de/haumann/classes/Sound/
Там сделано правда через Ж, мр3-шка сначала полностью декодируется, а потом проигрывается, при чем декодируется около 2 минут файл, который должен играть 38 сек. Вот сейчас пытаюсь пофиксить.
Если нужны все исходники с проектиными файлами, дай мыло - вышлю.

User avatar
T-Rex
Moderator
Moderator
Posts: 1187
Joined: Sat Oct 23, 2004 9:58 am
Location: Zaporizhzhya, Ukraine
Contact:

Post by T-Rex » Wed Aug 27, 2008 2:12 pm

t-rex [Yarrr!!!] mail.zp.ua

Post Reply