c++ - WxWidgets - 无法加载图像

标签 c++ wxwidgets

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

Run-time error window

代码如下:

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));

感谢任何帮助。

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

Second Error

我把exit.png文件放在build目录(/Debug或/Release)和源代码目录下,但是还是没看到。

最佳答案

你的工作目录是什么?

如果您使用的是 visual studio 并使用界面(F5 或 ctrl-F5 或工具栏中的小运行按钮)运行,那么您的工作目录就是包含项目文件的文件夹。因此,请尝试将您的图像文件复制到那里。

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

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

这种技术有几个优点:

  • 发布版和调试版都使用同一个文件夹,因此您只需要任何额外文件的一个拷贝,例如您的图像文件。
  • 很容易看到工作目录中的可执行文件和额外文件,而不会被最终出现在构建文件夹中的所有 .obj 文件分散注意力

恕我直言,这非常值得在维护非默认项目属性时遇到一些额外的麻烦。

关于c++ - WxWidgets - 无法加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089747/

相关文章:

c++ - 如何实现大型类容器类?

c++ - 在 C++ 中使用正则表达式读取空格、新行和制表符

java - 在使用 JNI 将 c++ unordered_map 返回到 java 之前将其转换为 java hashMap

c++ - wxWidgets 安装时 header 路径不正确

ubuntu - wxWidgets 如何使用代码块从 linux 交叉编译 Windows 应用程序?

c++ - 在 C++ 中格式化列

c++ - _T 无法识别 - 将 tchar.h 从微软移植到 gcc

python - 保存设备上下文绘制的图像,wxPython

c++ - 如何加载任意 XRC

c++ - 捕获网络状态变化事件