首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WindowsMobile6.1 (WM6.1)设备上使用WM2003二进制文件?(PE不能接受旧的二进制文件)

问如何在WindowsMobile6.1 (WM6.1)设备上使用WM2003二进制文件?(PE不能接受旧的二进制文件)
EN

Stack Overflow用户
提问于 2010-02-05 21:08:05
回答 2查看 536关注 0票数 1

嗨!

我有一个旧插件(二进制,dll),用于我的应用程序。它是为WM2003而建的。现在,如果加载到WindowsMobile6.1 (WM5工作正常,WM6也一样),该应用程序就会崩溃。

源代码不可用,开发人员也不再支持它。所以我不能为WM6.1重建它。

是否可以对二进制文件进行修补或转换以使其能够在WM6.1上工作?如果是的话,我怎样才能做到呢?

谢谢你,

编辑:我发现,在WM6.1上的作用与PE装载机出了问题不一样(与WM6和更早版本相比)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-08 19:03:23

这个问题很少见,但是可以找到一些信息。

常见的解决方案是在VS2008 (TCPMP为WM6.1构建新的VS2008)中重新构建二进制文件,但如果没有源代码,这将于事无补。

我在cegcc邮件列表(WindowsMobile6.1上的arm-wince)中找到了问题的解释和另一个解决方案。在WindowsMobile6.1内存管理方案中发生了变化。

从Windows 2003到WindowsMobile6.0,这种插槽安排一直保持不变。但是,随着WindowsMobile6.1的发布,事情发生了改变,以减少DLL压力,并帮助解决设备管理器进程空间中的问题。 在WindowsMobile6.1中,设备管理器的堆栈不再分配到进程的时隙中。相反,操作系统使用插槽59,位于大内存区域的顶部,用于设备管理器线程堆栈。..。

解决此问题的方法是在注册表中声明DLL (告诉操作系统不要在高内存中加载DLL)。

我不喜欢这个解决办法,所以我试着找一些二进制补丁程序。并发现:)

这不是一个真正的补丁,它是UPX - 对于eXecutables。但它完美地解决了问题。包含UPX的DLL不会使应用程序崩溃并运行良好。

票数 0
EN

Stack Overflow用户

发布于 2010-02-06 01:07:58

这个插件是否使用MFC或ATL?早期版本的WinMo有不同的ATL/MFC版本,因此在Studio中编写的MFC或ATL应用程序将无法工作,除非您将较新的ATL/MFC库与应用程序一起部署,就像旧的应用程序将无法在新设备上运行一样,除非您部署旧的MFC/ATL库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2210426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档