我有一些COM和一些为我所拥有的Win CE设备编译的本机dll。我想看看它们,所以我可以创建一个引用它们的应用程序,并扩展设备上已有的一些程序的功能。当我用Dependency Walker或Visual Studio 2008打开它们时,都告诉我它们是无效的DLL。但是,我相当确定它们没有被破坏,因为我从设备的ROM中提取它们以及其他未损坏的文件(bmps等)。所以我问 - WinCE dlls与win32 dll根本不同,因此vs和依赖不是正确阅读它们吗?或者还有其他事情发生了吗?
由于
答案 0 :(得分:0)
它们可能没有损坏,但是期望x86映像(而不是ARM,MIPS等)的工具在遇到为不同处理器编译的映像时可能会产生误导性错误。有许多类似的工具可以帮助(PEDump和PEBrowsePro浮现在脑海中),并且由于PE格式是可移植的(因此“可移植可执行”),其中一个必然会工作
此外,某些设备保护ROM中的可执行文件不被复制。复制它们时,设备可能会故意破坏您的文件。快速查看十六进制编辑器应该可以揭示这一点。
答案 1 :(得分:0)
Dependency Checker将与WinCE DLL一起使用(我自己经常使用它)。 您可能希望报告有关缺少依赖项的错误,因为依赖项检查程序将不知道在哪里可以找到Coredll.dll&可能是MFC DLL,因为它们与桌面DLL不同。一旦您对Dependency Checker进行了教育,您也可以解决这些链接。
否则,zildjohn01是正确的,您有时无法从WinCE设备的ROM中复制可执行文件或DLL。这取决于操作系统映像的制作方式:如果DLL或EXE包含为“MODULES”而不是“FILES”,则无法将其复制回来。