Получение ошибок с wxWidgets2.9.3 в Ubuntu - PullRequest
2 голосов
/ 31 января 2012

Я установил wxWidgets 2.9.3 в Ubuntu 10.10 с помощью ../configure --with-gtk
Я использую IDE Codeblocks и легко запустил на нем примерную программу Dialogs.

Но когда я попытался запустить свою работукод на Windows, VS2010 (wxWidgets 2.9.2), я получаю несколько ошибок и сбой во время выполнения, перечисленные ниже

  1. error: ‘class wxBitmap’ has no member named ‘UseAlpha’
  2. error: ‘class wxPanel’ has no member named ‘SetBackgroundBitmap’
  3. Следующий код также вызывает ошибку assert "m_menuItem" failed in Enable(): invalid menu item

    wxMenuItem *undoMenuItem;
    wxMenu* editMenu = new wxMenu(_(""));
    undoMenuItem = new wxMenuItem(editMenu, idMenuUndo, _("&Undo\tCtrl+Z"), _("Undo the last action"));
    undoMenuItem->Enable(false);
    editMenu->Append(undoMenuItem);
    
  4. Если я закомментирую приведенный выше код, скомпилирую и выполню, я получу SIGSEGVи стек вызовов

0 0x168f07a cairo_save () (/usr/lib/libcairo.so.2:?)
1 0x806520 wxCairoContext :: PushState () () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
2 0x805b38 wxCairoContext :: Init (_cairo *) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3: ??)
3 0х80736a: CreateContext (wxMemoryDC const &) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
5 0x822f06 wxGraphicsContext :: Create (wxMemoryDC const &) () (/usr/local/lib/libwx_gorek2_c.so.3: ??)
6 0x7c54b7 wxGCDCImpl :: wxGCDCImpl (wxDC *, wxMemoryDC const &) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
7 0x7c55wxGCDC :: wxGCDC (wxMemoryDC const &) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
8 0x80555fd Макет :: reset (this = 0x81713c0) (/ home / vinayak / codes/IConBread/breadboard.cpp:79)
9 0x8054e57 Макет :: Макет (this = 0x81713c0) (/home/vinayak/codes/IConBread/breadboard.cpp:17)
10 0x805d7c5 Интерфейс :: Интерфейс (этот= 0x8171200, родительский = 0x81703e0, ширина = 900, высота = 570) (/home/vinayak/codes/IConBread/interface.cpp:24)
11 0x8069db4 MainFrame :: MainFrame (this = 0x8108af8, frame = 0x0, title= ...) (/home/vinayak/codes/IConBread/mainframe.cpp:127)
12 0x80525a8 Application :: OnInit (this = 0x80ab228) (/home/vinayak/codes/IConBread/application.cpp:27)
13 0x8053194 wxAppConsoleBase :: CallOnInit (this = 0x80ab228) (/usr/local/include/wx-2.9/wx/app.h:94)
14 0xc53000 wxEntry (int &, wchar_t **) () (/ usr / local /lib / libwx_baseu-2.9.so.3: ??)
15 0xc530d7 wxEntry (int &, char **) () (/usr/local/lib/libwx_baseu-2.9.so.3:??)
16 0x805245f main (argc = 1, argv = 0xbffff924) (/home/vinayak/codes/IConBread/application.cpp:19)

Что может быть причиной этих ошибок?Помните, что в Windows (VS2010) это отлично работающий код.
Спасибо!

1 Ответ

1 голос
/ 01 февраля 2012

Я решил вышеуказанные проблемы с помощью разработчиков wxWidgets.

  1. UseAlpha зависит от MSW, поэтому я не могу использовать его в Linux
  2. docs / changes.txt предлагает
    wxPanel::SetBackgroundBitmap() удалено, выведите свой класс из wxCustomBackgroundWindow и используйте вместо него метод с тем же именем.
  3. Сначала добавление элемента в меню, прежде чем отключить его, решает проблему.
  4. Решение этой проблемы вызвало больше проблем, но ошибка времени выполнения исчезла.
    Я преодолел ошибку во время выполнения, позвонив, bitmap.Create(kWidth, kHeight, 32); перед функцией, которая обращалась к растровому объекту. Эта линия вызывалась после использования bitmap, переупорядочивание линий решило проблему.
    Однако я не могу получить прозрачность с wxGCDC сейчас.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...