gpt4 book ai didi

c++ - 在 Ubuntu 上使用 wxWidgets2.9.3 出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:33:26 24 4
gpt4 key购买 nike

我已经在 Ubuntu 10.10 上安装了 wxWidgets 2.9.3../configure --with-gtk
我正在使用 Codeblocks IDE,并在其上轻松运行了一个示例 Dialogs 程序。

但是当我尝试在 Windows、VS2010 (wxWidgets 2.9.2) 上运行我的工作代码时,我遇到了几个错误和运行时失败,如下所列

  1. 错误:“class wxBitmap”没有名为“UseAlpha”的成员
  2. 错误:“class wxPanel”没有名为“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 0x80736a wxCairoContext::wxCairoContext(wxGraphicsRenderer*, wxMemoryDC const&) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
4 0x807401 wxCairoRenderer::CreateContext(wxMemoryDC const&) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
5 0x822f06 wxGraphicsContext::Create(wxMemoryDC const&) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
6 0x7c54b7 wxGCDCImpl::wxGCDCImpl(wxDC*, wxMemoryDC const&) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
7 0x7c554e wxGCDC::wxGCDC(wxMemoryDC const&) () (/usr/local/lib/libwx_gtk2u_core-2.9.so.3:??)
8 0x80555fd Breadboard::reset(this=0x81713c0) (/home/vinayak/codes/IConBread/breadboard.cpp:79)
9 0x8054e57 Breadboard::Breadboard(this=0x81713c0) (/home/vinayak/codes/IConBread/breadboard.cpp:17)
10 0x805d7c5 Interface::Interface(this=0x8171200, parent=0x81703e0, width=900, height=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) 上,这是一个完美的工作代码。
谢谢!

最佳答案

在 wxWidgets 开发人员的帮助下,我解决了上述问题。

  1. UseAlpha 是 MSW 特定的,所以我不能在 Linux 上使用它
  2. docs/changes.txt 建议
    wxPanel::SetBackgroundBitmap() 已被删除,从中派生您的类wxCustomBackgroundWindow 并改用它的同名方法。
  3. 先将项目附加到菜单,然后再将其禁用,可解决问题。
  4. 此问题的解决方案引发了更多问题,但运行时错误消失了。
    我通过调用克服了运行时错误,位图.Create(kWidth, kHeight, 32);在访问位图对象的函数之前。在使用 bitmap 后调用此行,重新排序行解决了问题。
    但是,我现在无法通过 wxGCDC 获得透明度。

关于c++ - 在 Ubuntu 上使用 wxWidgets2.9.3 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9076727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com