WxWidgets - 无法加载图像

Jos*_*ega 3 c++ wxwidgets

我最近开始使用WxWidgets(2.9.4)并正在完成我发现的教程,但似乎我无法加载任何图像.我已经正确使用了处理程序(用于PNG),问题发生在运行时.下面是尝试运行程序时显示的弹出窗口的图像.

运行时错误窗口

这是代码:

wxPNGHandler *handler = new wxPNGHandler;
wxImage::AddHandler(handler);

wxBitmap exit;

exit.LoadFile(wxT("exit.png"), wxBITMAP_TYPE_PNG);

wxToolBar *toolbar = CreateToolBar();
toolbar->AddTool(wxID_EXIT, exit, wxT("Exit"));
toolbar->Realize();

Connect(wxID_EXIT, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(mainWindow::exitProg));
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

编辑:我忘了提到当我点击取消时,会发生这种情况:

第二个错误

我将exit.png文件放在构建目录(/ Debug或/ Release)以及源代码目录中,但它仍然没有看到它.

rav*_*int 5

你的工作目录是什么?

如果您正在使用visual studio并使用界面(F5或ctrl-F5或工具栏中的小运行按钮)运行,那么您的工作目录是包含项目文件的文件夹.所以尝试在那里复制你的图像文件.

或者打开命令窗口,cd到您的一个构建目录,然后从命令行运行您的应用程序.

一般来说,为了避免这种问题,我改变项目属性,以便可执行文件不存储在其中一个构建文件夹中,而是存储在一个新文件夹中(我通常称之为'bin' - 我的unix根目录正在显示!)并更改调试属性,以便工作目录是bin文件夹.

这种技术有几个优点:

  • release和trhe debug版本都使用相同的文件夹,因此您只需要任何额外文件的一个副本,例如图像文件.
  • 很容易看到工作目录中的可执行文件和额外文件,而不会被最终在构建文件夹中的所有.obj文件分心

恕我直言,这非常值得维护非默认项目属性的额外麻烦.