使用 Teststand Run-Time Engine Adapter 加载 LabVIEW VI 出错

更新 Nov 19, 2023

适用于

软件

  • TestStand
  • LabVIEW
  • LabVIEW Runtime

问题详述

当我在 TestStand 中使用 LabVIEW Run-Time Engine Adapter 时,出现以下错误:

无法使用 LabVIEW 运行时引擎版本 <LabVIEW 版本> 加载 VI <VI_name>。子 VI 的版本可能与运行时引擎的版本不匹配,或者可能缺少 VI 依赖项。

类似于下面的屏幕截图错误消息:



如果我尝试运行这个序列文件,我会看到错误,-18002 - 17600 显示消息无法在运行时加载所需步骤的关联模块

解决方案

正如文档TestStand 系统部署最佳实践中所建议的那样,我们建议使用源代码发布或打包包库来部署 LabVIEW 代码模块。

要自动处理大部分过程,您可以使用TestStand 部署实用程序来部署调用 LabVIEW 代码模块的序列文件。 TestStand 部署实用程序将所有 VI 保存在一个单一的 LabVIEW 版本中,并包括作为 LabVIEW ADE 一部分的任何必需的依赖项。部署实用程序还可以选择生成打包项目库 (PPL)。如需了解更多信息,请参阅Deploying VIs in LabVIEW Packed Project Libraries


LabVIEW 运行时引擎不具备 LabVIEW 开发环境的所有功能。以下是出现此错误的几个原因:
  • 该步骤调用的 VI 包含一个子 VI,该子 VI 保存在与顶层 VI 不同的 LabVIEW 版本中。批量编译 VI 的目录或 VI 本身可能会解决这个问题。批量编译顶层 VI 可以将所有子 VI 保存在同一版本的 LabVIEW 中。有关详细信息,请参阅如何在 LabVIEW 中进行批量编译。
  • 存在 LabVIEW 运行时引擎无法找到的依赖项。通过尝试以下不同的步骤,确保引擎可以找到任何 VI 的所有依赖项:
    • 如果可能,将所有 VI 和子 VI 放在一个目录中。
    • 如果 VI 或其子 VI 的目录不在TestStand 搜索目录中,首先将该目录添加到 TestStand 搜索目录中。这可以通过 Configure» Search Directories... 并单击 Add 浏览您的目录来完成。
    • 如果您的VI 或其依赖项启用了编译代码分离选项,则无法在 LabVIEW 运行时引擎中执行 VI。 LabVIEW 运行时无法访问 LabVIEW 开发环境的已编译对象缓存。
  • 如果 LabVIEW Run-Time 引擎的位数与 TestStand 的位数不匹配,则会出现此错误。如果有此要求,请参阅使用 64 位 TestStand 执行 32 位 LabVIEW VI
  • 由于 LabVIEW 应用程序实例,可能存在命名冲突。有关此错误的更多信息,请参阅文章“How TestStand Interacts with LabVIEW Application Instances”中“与命名冲突相关的错误”的部分。修复此错误的方法将根据用例而有所不同,例如:
    • 如果您不打算在序列和用户界面之间共享 VI 实例,请执行以下步骤:
      1. 在 OI 的构建规范中,在构建规范窗口的源文件设置选项卡中选择依赖关系。并选中将前缀应用于所有包含项
      2. 指定要使用的前缀。这将确保用户界面和序列不冲突。
    • 如果您确实打算共享内存,您可以通过在构建规范窗口的附加排除项选项卡中取消选择移除未使用成员后修改项目库文件来防止此错误。请注意,由于包含不必要的 VI,此更改可能导致更大的可执行文件。
  • 确保运行时引擎的版本与您正在使用的 LabVIEW 版本匹配。您可以使用 NI MAX 检查安装了哪些软件。
  • 如果您从打包库 (PPL) 访问 VI,请尝试再次重建 PPL 并在重新加载后调用 TestStand 序列。注意:在 LabVIEW 项目中创建项目库后,在构建打包库之前,为项目库创建一个单独的 LabVIEW 项目。如果在创建打包库的同一个LabVIEW项目中构建打包库,并用打包库替换项目库,则无法重建打包库。

相关信息

如果这些步骤都不能解决您的错误,请考虑以下选项:
  • 通过消除子 VI 来缩小错误源,直到错误消失。您可以使用图表禁用结构逐步禁用子 VI,直到找到错误源。
    • 如果您能够确定导致问题的 VI,请尝试重新创建 VI 并将其保存在导致问题的 VI 的位置。
  • 构建源分发或打包库以确保所有依赖项都正确链接并且代码在同一版本中编译。构建 TestStand Deployment 将完成此任务。