我遇到了一些 Windows CE 5.0 设备的问题,这些设备在从待机(挂起)状态恢复后几乎立即崩溃。我已将问题压缩到大约 15 行 C++ 以简单地让 wxWidgets 显示一个消息框,如果我这样做,问题就会出现:
- 启动应用程序
- 暂停设备(我的意思是短暂按下红色电源按钮)
- 恢复设备
- 按消息框标题中的确定按钮。
- 繁荣
在我将其浓缩之前,这个问题以许多其他方式表现出来 - 在加载位图时,在扫描条形码时,一旦它被暂停,然后恢复。
我正在使用以下内容:
- Windows CE 5.0 Professional(摩托罗拉 MC3090 设备)(还有 WM 6.5 (MC55)、CE 6.0 (MC3190))
- 视觉工作室 2005 SP2
- wxWidgets 2.8.10
- Microsoft Windows CE 5.0 标准 SDK
显示的实际错误是零星的和广泛的,但主要是访问冲突,通常在函数调用的起始地址附近(通过挂起设备发现这一点,恢复然后在设备上附加 VS 调试器)。在对此做了大量的功课之后,我已经阅读了一些建议,这可能是某种堆损坏的发生。只要应用程序没有挂起,它就可以在所有正确的 SDK 和设备组合中正常运行。
我还尝试了以下 SDK:
- 微软掌上电脑 2003 SDK
- 用于 MC3000c50a 的 Symbol 平台 SDK
- 用于 MC3000c50b 的 Symbol 平台 SDK
- 视窗移动 5.0 SDK
- Windows Mobile 6.0 SDK
我已经测试了以下设备:
- MC3090 (Windows CE 5.0) - 同样的问题
- MC55 (Windows Mobile 6.5) - 同样的问题
- MC3190 (Windows CE 6.0) -使用 StandardSDK 构建的此设备上不会出现问题
我已经过度使用 wxWidgets 的设置,始终确保我将应用程序与正确的相应 SDK 链接。
这是导致此问题的代码:
#include "wx/wxprec.h"
class Application : public wxApp {
public:
virtual bool OnInit();
};
bool Application::OnInit() {
wxMessageBox(L"Test");
return true;
}
IMPLEMENT_APP(Application)
任何有一些建议的人,我将永远感激不尽!如果我遗漏了任何重要的细节,也请告诉我。