【发布时间】:2014-01-27 14:59:14
【问题描述】:
我正在使用 C# 中的 National Instruments Measurement Studio,在将我的应用程序部署到特定计算机(运行 Windows 7)时遇到了一些问题。我已经尝试在 National Instruments 论坛上提问,但还没有任何解决方案 - 这里有人可以给我一些提示吗?
基本上,我已在多台计算机上多次部署此应用程序,但在这种特殊情况下,我在运行程序时收到错误 -
“System.DllNotFoundException:无法加载 DLL 'nianlys.dll':找不到指定的模块。(来自 HRESULT 的异常:0x80070007E)
我已确保 nianlys.dll 存在于 C:\Program Files (x86)\National Instruments\Shared\Analysis。
我已确保存在 libiomp5md.dll 和 LV110000_BLASLAPACK.dll,来自 mkl.msm 的文件(nianlys.dll 依赖于 mkl.msm)。 nianlys.dll 还依赖于 nimetautils.msm,但我不确定其中包含哪些 dll。
我已通过以管理员身份运行 setup.exe 确保程序已安装(而不是运行生成的 .msi,请参阅here)。
我已确保有问题的计算机是最新的,通过 Windows 更新对 .net 框架进行了更新。
我曾多次尝试重新安装程序,有时使用重新编译的安装程序。
我已尝试将 64 位 nianlys.msm 手动添加到安装项目中 - 这会引发错误,因为安装项目的 TargetPlatform 属性设置为 x86。当然,检测到的依赖项中已经存在 32 位版本。
-
有趣的是,从 C:\Program Files (x86)\National Instruments\Shared\Analysis 获取 nianlys.dll 的副本并将其插入到程序安装的目录中会引发不同的错误 - 在这种情况下,错误是:
“试图加载格式不正确的程序。(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。
我想尽办法解决这个问题。
【问题讨论】: