【问题标题】:WinCE vs. Win32 dllsWinCE 与 Win32 dll
【发布时间】:2009-11-16 16:58:11
【问题描述】:

我有一些 COM 和一些为我拥有的 Win CE 设备编译的本机 dll。我想看看它们,这样我就可以创建一个引用它们的应用程序,并扩展设备上已有的一些程序的功能。当我使用 Dependency Walker 或 Visual Studio 2008 打开它们时,它们都告诉我它们是无效的 DLL。但是,我相当肯定它们没有损坏,因为我从设备的 ROM 中提取了它们以及其他未损坏的文件(bmps 等)。所以我在问-WinCE dll 是否与 win32 dll 有根本的不同,因此 vs 和取决于没有正确读取它们?还是发生了其他事情?

谢谢

【问题讨论】:

    标签: dll winapi windows-ce


    【解决方案1】:

    它们可能没有损坏,但预期 x86 映像(与 ARM、MIPS 等不同)的工具在遇到针对不同处理器编译的映像时可能会产生误导性错误。有许多类似的工具可能会有所帮助(想到 PEDump 和 PEBrowsePro)散布在网络上,并且由于 PE 格式是可移植的(因此“portable executable”),其中一个肯定可以工作.

    此外,某些设备会保护 ROM 中的可执行文件不被复制。当您复制文件时,设备可能会故意损坏您的文件。快速浏览一下十六进制编辑器应该会发现这一点。

    【讨论】:

    • 感谢您的帮助,我会尝试您提到的一些。
    【解决方案2】:

    Dependency Checker 可以与 WinCE DLL 一起使用(我自己也经常使用它)。 您可能会收到有关缺少依赖项的错误报告,因为依赖项检查器不知道在哪里可以找到 Coredll.dll 和可能的 MFC DLL,因为它们与桌面的不同。一旦你教育了依赖检查器,你也可以解决这些链接。

    否则,zildjohn01 是正确的,您有时无法从 WinCE 设备的 ROM 中复制可执行文件或 DLL。这取决于操作系统映像的制作方式:如果 DLL 或 EXE 包含为“模块”而不是“文件”,那么您无法将它们复制回来。

    【讨论】:

    • 感谢您的帮助。实际上,这些文件是模块,这可以解释为什么它们不起作用。我不得不将它们从我的设备固件更新中提取出来,并进行一些转换以将它们变成 dll。您知道打开/探索 WinCE 模块的方法吗?它们可以转换/编译为 dll 吗?如果有帮助,我最初有原始模块(带有 s0000、s0001 等)文件,然后我使用 recmod(重新编译模块)将其编译为 dll,我认为这会产生一个工作 dll……我猜不是?过去的经验有什么想法吗?
    • @hairchrm - 恐怕在这里帮不了你,我对 recmod 或者它是否创建有效的 DLL 了解不够(我没有使用它)。
    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多