zoukankan      html  css  js  c++  java
  • 从 eVC 移植所带来的已知问题

    可以借助多种 C++ 工具和资源,将现有的 Embedded Visual C++ 项目转换为 Visual Studio 2005。有关更多信息,请参见 eMbedded Visual C++ 到 Visual Studio 2005 升级向导

    自 eVC 以来,活动模板库 (ATL)、Microsoft 基础类 (MFC) 和标准 C++ 库已更新和更改。 某些类不再受支持。请参见从 MFC 3.0 升级到 8.0 后不受支持的 eVC 类的列表。 调用这些类的代码需要先进行修改,然后才能在 Visual Studio 2005 中编译。 从 eVC 移植时通常会出现下列问题。

    问题 说明/解决方法

    对于 CE 3.0 以上的设备,不会在 MFC 中调用 CCeSocket::OnReceive() 方法。

    有关详细解决方案,请访问以下网址:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;253945

    不支持 CArchive Class 类。

    许多 eVC 项目包含对 CArchive Class 类的引用。 要解决此问题,需要移除对 CArchive 的引用。

    某些集合类(包括 CObArray、CMapPtrToPtr 等等)是在 CE 5.0 中使用 CArray<>、CMap<> 等的模板化版本实现的。 在 Embedded Visual C++ 4.0 版和桌面 C++ 库中,这些类型是作为常规、非模板化的类实现的。 因此,对这些模板化的类调用 IMPLEMENT_SERIAL 会导致编译错误:

    错误 C2039:“classCObArray”: 不是“CArray<TYPE,ARG_TYPE>”的成员。

    错误 C2065:“classCObArray”: 未声明的标识符

    若要解决实现中的此差异,请更改 IMPLEMENT_SERIAL 宏以使用 CObject,而不是 CObArray、CMapPtrToPtr 等等。

    也就是说,请不要编写以下代码:

    IMPLEMENT_SERIAL(CYourClass, CObArray, 0)

    而使用以下代码:

    IMPLEMENT_SERIAL(CYourClass, CObject, 0)

    默认情况下,Embedded Visual C++ 4.0 版会将 MFC Pocket PC 应用程序的对话框样式设置为 DS_MODALFRAME。 MFC 8.0 不支持此样式。

    示例

    此节简要介绍一些更常见的错误,在将项目从 eMbedded Visual C++ 迁移到 Visual Studio 2005 时,可能会遇到这些错误。有关更多信息,请参见 Migrating Microsoft eMbedded Visual C++ Projects to Visual Studio 2005(将 Microsoft eMbedded Visual C++ 项目迁移到 Visual Studio 2005)

    • 编译错误:无法打开包含文件“wceres.rc”

      右击项目资源 (RC) 文件,选择“查看代码”,然后注释掉以下行:

      //#include "wceres.rc"
    • 未定义 NUM_TOOL_TIP

      在头文件中,为 Pocket PC 配置定义 #define _WIN32_WCE_PSPC,为 Smartphone 配置定义 _WIN32_WCE_WFSP

    • 无法打开 OLDNAMES.lib 文件

      在“解决方案资源管理器”中,右击项目文件,然后单击“属性”。

      单击“链接器”。 编辑“忽略特定库”属性,方法是添加 OLDNAMES.LIB

    • 重载不明确

      标准 C++ 库 (SCL) 和 ATL 具有同时存在于设备 SDK 中的 API。 使用诸如 :: 的命名空间消除歧义性。

    • 模块计算机类型“THUMB”与目标计算机类型“ARM”冲突

      在“解决方案资源管理器”中,右击项目文件,然后选择“属性”。

      在“配置属性”下,展开“链接器”,然后单击“命令行”属性。 对于每个 Windows Mobile 5.0 配置,在“属性”页中从命令行移除 /MACHINE:THUMB 开关。

    • 资源字符串未正确分隔

      您可能遇到未正确分隔来自所移植应用程序的资源字符串的问题。 在“解决方案资源管理器”中,右击项目文件,然后单击“属性”。 在“配置属性”下,展开“资源”,然后选择“命令行”属性。 将 -n 开关添加到资源编译器命令行中。

    • 对话框中需要 BEGIN 错误

      发生该错误后通常会发生“未找到文件”这类错误,例如,“找不到文件: 0x1”。 请转至错误所指示的 RC 文件,然后编辑代码以便在 FONT 声明前后使用 #ifdef 语句,如下面的代码示例所示。

      原来的代码:

      IDD_COMPTEST DIALOGEX 0, 0, 186, 95
          STYLE DS_SETFONT | WS_CHILD
          EXSTYLE WS_EX_CONTROLPARENT
          FONT 8, "MS Sans Serif", 0, 0, 0x1
          BEGIN
          END

      修改后的代码:

      IDD_COMPTEST DIALOGEX 0, 0, 186, 95
          STYLE DS_SETFONT | WS_CHILD
          EXSTYLE WS_EX_CONTROLPARENT
          #ifdef _WIN32_WCE
          FONT 8, "MS Sans Serif"
          #else
          FONT 8, "MS Sans Serif", 0, 0, 0x1
          #endif
          BEGIN
          END

    请参见

  • 相关阅读:
    NodeJS旅程 : module 不可忽略的重点
    NodeJS旅程 : Less
    NodeJS旅程 : express
    新的旅程:NodeJS
    活用命令模式
    20145226《信息安全系统设计基础》第0周学习总结
    20145226夏艺华 《Java程序设计》第1周学习总结
    学习 MySQL-DBA常用SQL汇总
    关于旗舰店直通车的由来
    学习 Mysql
  • 原文地址:https://www.cnblogs.com/chengxuyuan/p/1352219.html
Copyright © 2011-2022 走看看