查看文章
 
关于PB5.0生成SDK问题
2009-05-18 12:39

成功生成一个 Microsoft Windows CE 5.0 运行时映像在 Microsoft Platform Builder 5.0 后,尝试使用 SDK 向导生成软件开发工具包 (SDK)。 当尝试生成 SDK 可能会收到以下错误信息:

It is recommended that you build a run-time image before building an SDK. Otherwise, the build process for your SDK might not succeed. Do you want to continue?   [ 强烈建议您生成之前生成的 SDK 的运行时映像。 否则,您 SDK 的生成过程可能会失败。 是否继续? ]

如果单击 继续,您可能会收到以下错误信息生成的 SDK 生成的:

滚动 sysgen'ed 标头和库

错误: 此生成配置尚未 sysgen'ed
添加 sysgen'ed 标头和库时出错
滚动工具包特定文件的错误
MSI 文件构造完成。 3 的错误 0 的警告。

原因:

因为 SDK 向导决定在 Windows CE 5.0 操作系统配置 sysgen 工具不生成至少一次出现此问题。 当前,SDK 向导决定是否操作系统配置中生成 sysgen 工具通过验证的一组锚定的目录项和 unanchored 的目录项 SysgenSettings.out 文件中指定。 SysgenSettings.out 文件由操作系统生成系统生成。 SysgenSettings.out 文件包含 sysgen 变量在最终解决的组。 但是,有时,操作系统生成系统可能合法地删除锚定的目录项在 sysgen 解决方案阶段。

例如,操作系统设计可能包含为锚定的目录项的"英语 (美国) 国家 / 地区语言支持"目录项 (SYSGEN_LOCUSA)。 但是,操作系统生成系统 unsets,并删除此目录项,如果目标非英语的区域设置。 在此示例,SDK 向导检测 SysgenSettings.out 文件缺少至少一个锚定的目录项。 为具有要生成,SDK 向导都会将操作系统配置。

替代方法:(按照此方法成功解决-zq)

要解决此问题,首先您要保证已成功生成的系统,在最近一次生成以后没有做如何模块的修改操作。 然后,请按照下列步骤操作:
在Platform Builder 5.0中的"Build OS"菜单下点击"Open Release Directory",打CE开命令行,在其中输入:"dir %_PROJECTROOT%\SysgenSettings.out",
这个过程的效果如下所示:

E:\WINCE500\PBWorkspaces\mh_sql2\RelDir\smdk2410_ARMV4I_Release>dir %_PROJECTROOT%\SysgenSettings.out
驱动器 E 中的卷没有标签
卷的序列号是 58E0-CE75

E:\WINCE500\PBWorkspaces\mh_sql2\WINCE500\smdk2410_ARMV4I 的目录

2008-11-26 IBM T23 17:38             3,230 SysgenSettings.out
               1 个文件          3,230 字节
               0 个目录 8,280,449,024 可用字节

    这表明:在那个目录下有"SysgenSettings.out"文件和大小,及其所在磁盘的一些信息。你就可以在指定的路径%_PROJECTROOT%下找到"SysgenSettings.out"文件。

    再在CE命令行下输入set sysgen>anchored.txt,在指定的%_FlatReleaseDIR&路径下生成一个anchored.txt文本。
这个过程的效果如下所示:

E:\WINCE500\PBWorkspaces\mini2440\RelDir\smdk2440_ARMV4I_Release>set sysgen>anchored.txt
E:\WINCE500\PBWorkspaces\mini2440\RelDir\smdk2440_ARMV4I_Release>

    在"E:\WINCE500\PBWorkspaces\mini2440\RelDir\smdk2440_ARMV4I_Release"下创建一个anchored.txt文本

    然后你用记事本或是UE工具打开这两个文件(anchored.txt 和 SysgenSettings.out 文件),比较其中的不同。
    具体是:找到Anchored.txt中有的,而在SysgenSettings.out中没有的Sysgen variables。
比如笔者这次找到的:

SYSGEN_DOTNET=1
SYSGEN_DOTNET_SUPPORT=1

这就找到了,造成SDK编译过程中错误的元凶了!

接着,在Platform Builder环境中的Catalog中寻找对应的组件。具体做法:
    1.在Catalog界面的空白区右击鼠标,找到"Find"选项进行查询,比如要查询SYSGEN_DOTNET=1对应的组件,那就在Find what box中填入"SYSGEN_DOTNET",点击"Find next",这样就在Catalog区域标识出SYSGEN_DOTNET对应的组件,如图1所示;


    2.对照SYSGEN_DOTNET对应的组件在Catalog中结构路径,在OSDesign View选项卡中找到同样的组件,一般这个最近会标识为"OSDesignView",即未锚定的组件,如图2所示;


    3.OSDesign View选项卡中,右击未锚定的组件,选中"Remove Item from User-specified Catalog Item(s).",这样就在定制的系统中删除了未锚定的组件;
    4.重复步骤1到步骤3,删除完在之前找出的Sysgen variables,既是为锚定的组件,删除之;(即删除未锚定的组件-zq)
    5.保存设置,否则容易在随后的漫长等待中出现意外(也不知道为啥,我的PB5.0[打了2007补丁]很多时候,在执行Config SDK时会卡个几个重头,真是让人郁闷!);
    6.这样,就可以去正确的生成这个平台所对应的SDK了,构建SDK完成后,点击DONE结束,如图3、图4;

图4 完成SDK导出的画面
    7.最后,在%_WINCEROOT%\PBWorkspaces\<工程名>\SDK\下就可以生成基于你定制的平台的SDK了!!而在该文件夹中的packinglist文件就是详细说明该SDK包含的组件和文件列表。
-------------------------------------------------------
   如有不明白或想更详细的了解这一错误,可参见微软官方技术支持帖子:“http://support.microsoft.com/kb/906459/en-us”


类别:Wince||添加到搜藏 |分享到i贴吧|浏览(586)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu