【问题标题】:How to Port Windows Embedded Compact 7 DLL to Windows CE 5.0 / 6.0?如何将 Windows Embedded Compact 7 DLL 移植到 Windows CE 5.0 / 6.0?
【发布时间】:2018-02-05 23:04:37
【问题描述】:

我想将针对 Windows Embedded Compact 7 编译的 DLL 移植到 Windows CE 5.0 / 6.0 环境中。我相当确定目标汇编语言是兼容的,但从我的实验看来,WEC 7 中的 DLL 与 WCE 5 中的 DLL 存在根本不同。有谁知道 DLL 在 WEC 7 中的编译方式有什么特别的不同比 WCE 5/6?

【问题讨论】:

  • 顺便说一下,这是一个非托管 C++ DLL(没有 .NET)。
  • 该程序也可以在 WCE 5 下“运行”,但会锁定且没有错误消息。如果是名称修改或依赖问题,我会期望 DLL 或程序甚至不会加载,就像在我没有正确依赖依赖之前那样。

标签: c++ visual-c++ dll windows-ce windows-embedded-compact


【解决方案1】:

我假设此 dll 的源代码不可用,这可能使其难以在早期版本的 Windows CE 上使用。

较新版本的 CE 已向 CRT 库添加了安全功能,因此如果 dll 依赖于其中任何一个,它将无法在早期版本上运行。

除了目标架构之外,还必须使用一组类似的 OS/SYSGEN 功能来构建 OS 映像,或者,如果不满足这些依赖关系,则 dll 可能无法加载或运行。

该 dll 可能正在尝试动态加载其他 dll,或者可能依赖于特定于 CE 7.0 的操作系统行为。

简而言之,如果没有源代码,这可能是一项非常困难的任务。

开始的一种方法是使用带有/imports 选项的Microsoft dumpbin 工具来生成dll 和dll 所依赖的入口点的列表。同样,在您想要使用 dll 的早期版本的 Windows CE 上使用 dumpbin /exports,查看可用的入口点,然后从那里开始工作。

如果您可以访问 Platform Builder 并且能够自己生成 OS 映像,另一种方法是使用内核调试器检查加载 dll 时会发生什么。

【讨论】:

  • 谢谢卡斯滕!我会尝试其中的一些想法,让每个人都知道效果如何。
  • 我使用了 dumpbin /import 实用程序来查找依赖项。依赖关系与我通过观察 Platform Builder 5.0 的构建输出推断的依赖关系相同。我确信存在依赖项。事实上,我知道其中一个依赖项(通过匹配“crt_ordinals.h”中的序数)是“__security_gen_cookie2”,这是 WCE 5 中不存在的函数。但我从 WEC7 中获取了该函数并将其添加到coredll.dll 和重新编译的 coredll.dll 所以现在这个函数存在于 WCE 5 中。但即使解决了所有依赖项,它也会锁定。接下来我可以试试 KITL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多