基本上,在多台计算机上部署了该应用程序,但在这种特殊情况下,运行程序时会收到错误信息 -
"System.DllNotFoundException: 无法加载DLL“nianlys.dll”:找不到指定的模块。(来自HRESULT的异常:0x80070007E)
我已确保nianlys.dll位于C:\Program Files (x86)\National Instruments\Shared\Analysis。
我已确保mkl.msm中的libiomp5md.dll和LV110000_BLASLAPACK.dll文件(nianlys.dll依赖于mkl.msm)存在。 nianlys.dll还依赖于nimetautils.msm,但我不确定其中包含哪些dll。
我已通过以管理员身份运行setup.exe(而不是运行生成的.msi文件,请参见此处)来确保程序已安装。
我已通过Windows更新确保涉及计算机的.net框架已更新。
我尝试了多次重新安装该程序,有时使用全新编译的安装程序。
我尝试手动添加64位nianlys.msm到安装程序项目中 - 这会引发错误,因为设置项目的TargetPlatform属性设置为x86。 当然,在检测到的依赖项中已经存在32位版本。
有趣的是,将nianlys.dll从C:\Program Files (x86)\National Instruments\Shared\Analysis复制并插入程序安装目录会引发不同的错误 - 在这种情况下,错误是:
“尝试加载具有不正确格式的程序。 (HRESULT: 0x8007000B) ”
从另一台计算机(默认位置C:\Program Files\National Instruments\Shared\Analysis)复制64位版本的nianlys.dll并将其插入程序安装目录会引发第三种类型的错误 - “System.DllNotFoundException:无法加载DLL 'nianlys.dll':动态链接库(DLL)初始化例程失败。 (HRESULT: 0x8007045A)”。应该注意到,在将该程序安装在正常运行的计算机上之前,此.dll已经存在,但在出现问题的目标计算机上不存在。
将相同的64位nianlys.dll插入它在另一台计算机上找到的位置C:\Program Files\National Instruments\Shared\Analysis,无法解决最初的错误。
更有趣的是,我尝试在程序正常运行的计算机上重现错误 - 删除x64版本的nianlys.dll会引发原始HRESULT:0x80070007E错误,而删除x86版本会在运行程序时弹出Windows安装程序。
在程序在没有任何问题的计算机上,Windows任务管理器似乎并未指示该程序为32位(带有*32后缀的程序名称),尽管目标平台设置为x86。从所有这些情况来看,nianlys.dll在其x64和x86版本中使用存在一些问题,尽管目标平台仅为x86。