WinCE 调试某手写输入法时遇到的加载手写库失败的问题

调试某手写输入法时遇到的加载手写库失败的问题

在 WinCE6.0 下使用此手写输入法 SDK 做了一个单独的手写输入程序A(MFC Dialog 框架)。正常情况下,可以正常使用。

此 A 程序,采用 LIB 方式加载此的手写 SDK。

在运行某一带手写输入的程序 B 后,A 程序无法运行。首先怀疑 B 程序中也使用了此手写 SDK,导致加载冲突。

但仔细想想程序 B 和程序 A 应该运行在不同的进程空间,且最后确定程序 B 并未使用此手写。

进一步测试发现,如果程序 A 先运行,再程序 B 程序。虽然 B 可以正常运行,在手写输入后无法识别。

由于 A 程序,在 B 程序运行后根本无法运行,无法进行调试来分析问题的原因。参考再三,决定将 A 程序调用手写 SDK 的方式由静态加载修改为动态加载。

分析 A 程序,发现只调用了 4 个手写 SDK 的程序。采用 LoadLibrary() 加载 DLL 和 GetProcAddress() 加载此 4 个函数后

(1) 在不运行 B 程序时,4 个函数加载都成功,手写功能可以正常使用;

(2) 在先运行 B 程序后,发现有三个函数加载是没有问题的,其中一个函数无法加载成功,GetLastError() 得到的错误是: 87(参数不正确)。

在修改为动态加载后,测试过先运行 A 程序,再运行 B 程序。和以前的结果是一样的,B 程序的手写无法识别。

再次测试,将 A 程序中对手写 SDK 的初始化代码删除后,先运行 A、再运行 B 程序,B 程序一样无法手写识别。

至此,都未解决问题。

查看此 B 程序,发现其虽然没有使用此手输入法。但其使用的输入法与此手写输入法的 DLL 名称、DLL 中函数的名称完全是一样的。

将 A 程序使用的此手写 SDK 的动态库 DLL 改名,再次进行测试发现 A 程序和 B 程序可以完美的共存。

进行到这一步,问题已经解决,但对问题的根本原因(也就是解析)还不明白。

问题的关键在于运行 B 程序后为何 A 程序动态加载 DLL 中的函数时,那个函数会加载失败?两个独立的进程空间,为什么会冲突?

时间: 2024-08-03 19:21:21

WinCE 调试某手写输入法时遇到的加载手写库失败的问题的相关文章

尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Client,直接解压,设置Path就ok了.具体设置如下:1.下载32位Oracle InstantClient 2.将Oracle InstantClient解压到某目录 3.打开PL/SQL,在perference里面设置OCI Library和Oracle_home,例子如下:        

Android App 启动时显示正在加载图片(源码)

微信.QQ.天天动听等程序,在打开时显示了一张图片,然后跳转到相关界面.本文实现这个功能,其实很简单.... 新建两个Activity,LoadingActivity,MainActivity,将LoadingActivity设置为android.intent.action.MAIN.使用TimerTesk,或者Thread将LoadingActivity显示几秒后跳转到MainActivity界面. LoadingActivity: new Timer().schedule(new Timer

Linux # Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso

问题: Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso 分析:通过分析日志,%vbox_path%\VirtualBox Guest Additions\install_drivers.log发现, 查看安装过程中的信息,如下图,发现缺少 相关dll文件, Linux # Virtul Box 安装增强功能时, 未能加载虚拟光盘VBoxGuestAdditions.iso,布布扣,bubuko.com Linux # Virtul Box 安

尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录

1公司电脑是win7 64位旗舰版,刚来时配的新电脑,4G+i5这个配置不装64位那算是浪费了.谁知道一切装完毕后,打开项目却连不上oracle数据了... 首先是pl/sql连不上,我在本地装了个oracle 11g r2 64位的.装了oracle服务器,应该是不用再装客户端,pl/sql应该就能连上的,应为oracle服务器版本自带了客户端的那些管理工具和功能.但是pl/sql一直报个错啊!大概意思是说找不到32位的oci.dll文件之类的错误,网上一搜,说pl/sql装在64位系统上,要

virtualbox安装增强功能时【未能加载虚拟光盘】

virtualbox安装增强功能时[未能加载虚拟光盘] 今天在使用Virtualbox中的Ubuntu虚拟机,想安装增强功能来实现更改分辨率,但是在安装时出错:未能加载虚拟光驱 VBoxsGuestAdditions.iso到虚拟电脑 经过折腾,最后通过互联网找到了解决方法: 进入系统在侧边找到如图加载的虚拟光驱,右击,点击弹出,然后就可正常安装增强功能了 点击安装增强功能 点击"运行" 输入登录系统的密码,点击授权,就开始自动安装了 如图,为安装界面,安装完成后按下回车键,就按照成功

解决4.4版本以上剪裁图片时提示无法加载图片的问题

/** * 将uri转换成字符串 * 解决4.4版本以上获取到的uri是图片名称而非图片路径,导致剪裁图片时提示无法加载图片的问题 * 详细的解决方案,请参考这篇文章 * 当安卓的版本比较高时(如4.4),选择本地相册可能会返回“无法加载此图片” * 原因:正常uri是file://...而高版本是content://... * 所以需要一个转换操作 * * @param context * @param uri * @return */ @SuppressLint("NewApi")

webservice 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下运行,将出现此问题

最近做的项目中,应用服务器迁移到另外一台服务器,操作系统升级为win10,配置好IIS里的应用程序发布网站和Webservice网站后, 客户端程序调用Webservice出错: “尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下运行,将出现此问题”. 写了个控制台程序,在本机上运行测试,还是出现这个问题: 最开始以为是oracle客户端的问题,重新安装另外一个版本的客户端,运行程序还是出现这个错误.

尝试加载 Oracle 客户端库时引发 BadImageFormatException

工程师给计算机诊断,就像医生给病人诊断一样,很多同样的症状,可能是由多种截然不同的原因导致的.   最近进行C# Oracle开发时,遇到一个问题"尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题."   在网上找了一些资料:   1.http://www.cnblogs.com/joey0210/archive/2012/08/15/2640248.html

未能加载文件或程序集“BLL”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。

今天使用VS2012创建项目的时候,考虑到项目中代码的重用性以及清晰简洁性,搭建了一个三层架构,但是在项目运行的时候,总是报错: “未能加载文件或程序集“BLL”或它的某一个依赖项.生成此程序集的运行时比当前加载的运行时新,无法加载此程序集.” 在网上查找了半天也没有更好的办法,突然,灵感一现,修改.net版本,果断解决这个问题, 一开始是使用的版本是3.5:修改后的版本是:4.5 修改方法: 项目=>右键=>属性=>目标 framework=>选择版本