MC95-加载相机投掷Can';找不到PInvoke DLL';EMDKServices.dll';错
本文关键字:DLL PInvoke EMDKServices dll 找不到 加载 Can 相机 MC95- | 更新日期: 2023-09-27 18:21:45
我正在摩托罗拉MC95扫描仪上开发一个.net应用程序,当我试图打开相机时,我收到了这个错误:找不到PInvoke DLL"EMDKServices.DLL"。我以前收到过这个错误,但总是在扫描仪已启用的情况下。我在4台扫描仪上运行相同的代码,只能在其中两台扫描仪上重现问题。不幸的是,我们可以用的两台扫描仪距离我几千英里
接收到错误的可能原因是:找不到PInvoke DLL"EMDKServices.DLL"。启用相机时
我让他们尝试了默认的演示应用程序,它加载并拍照没有问题。
将EMDK用于.Net 2.8版
实际原因是引发错误的扫描程序缺少"Symbol Managed class Libraries"应用程序。已经确定,当直接从visualstudio部署到扫描仪时,它会自动推送并安装此应用程序,但当通过cab安装程序进行部署时,它不会被安装。修复方法是在应用程序启动时添加一个检查,以查看库是否已安装,并向用户抛出错误。
if (System.IO.Directory.Exists(@"'Windows'AppMgr'Symbol Managed Class Libraries'") == false)
{
DisplayMessage("Symbol Managed Class Libraries not detected. Please Install or contact help desk.", "Error");
}
要安装库,请在设备上运行以下cab:从安装了EMDK的计算机上获取驾驶室:C:''Program Files(x86)''Motorola EMDK for.NET''v2.8''SDK''Smart Devices''wce500''armv4i''symbol.all.arm.cab一旦运行并安装在设备上,相机就会完美工作。
我研究了一种将这种驾驶室纳入我的驾驶室的方法,但没有找到一种干净的方法,每次建造后都要做大量的善后工作。考虑到这是每台设备运行一次,我对错误消息很满意。
当使用PInvoke时,系统会按照此步骤搜索本机DLL。默认情况下,桌面应用程序的标准搜索顺序为:
- 从中加载应用程序的目录
- 系统目录。使用GetSystemDirectory函数获取此目录的路径
- 16位系统目录。没有函数可以获得此目录的路径,但会对其进行搜索
- Windows目录。使用GetWindowsDirectory函数获取此目录的路径。当前目录
- PATH环境变量中列出的目录。请注意,这不包括指定的每个应用程序路径通过App Paths注册表项。当计算DLL搜索路径
对于您的问题,您可以使用工具进程监视器来监视您的进程,它调用日志进程的文件活动,它将向您显示进程如何搜索某个DLL。
正如你所说,你的程序在某些机器上运行,有些则不然。通过比较进程监视器的日志,您应该能够发现问题所在。