我的应用程序(EXE)不能正确动态调用我的插件

更新 Nov 17, 2023

适用于

软件

  • LabVIEW Application Builder Module

问题详述

https://www.ni.com/docs/zh-CN/bundle/labview/page/lvdialog/source_distrib_db.html 我正在构建插件架构的应用程序,因此可以动态调用将来创建的VI(插件)。我的应用程序可以在LabVIEW开发环境中正常运行,但无法作为可执行文件运行。

运行可执行文件时,会发生以下情况之一:
  • 我的应用程序似乎没有执行,没有调用该插件
  • 我收到错误1003,显示VI不可执行
  • 我收到一个对话框,要求我找到“丢失的”子VI

解决方案

下面概述了几种可用于解决此问题的方法:
  • 方法1:将子VI包含在与插件相同的目录中

    将插件使用的子VI保存在与插件相同的位置。您也可以将这些子VI包含在与插件位于同一目录的文件夹中。之所以可行,是因为可执行文件的默认VI搜索路径包括可执行文件的路径及其子目录。注意:您必须包括VI的所有依赖项,包括子-subVI等。
  • 方法2:将您的插件另存为LLB

    通过选择文件»另存为...»新建LLB将插件另存为LLB。这样会自动将所有子VI(包括引用的vi.lib VI)保存到一个LLB文件中。有关创建LLB的更多信息,请参见如何创建自动包含所有子VI的LabVIEW VI库?
  • 方法3:将您的插件创建为单个顶级VI,并将子VI另存为LLB

    这是方法1和方法2的结合。首先照常保存顶级VI(即MyVI.vi.)。然后按照方法2(即MyVI.llb)中的说明保存您的VI。这实际上将创建一个子目录(MyVI.llb),其中包含必要的子VI。注意:llb还包含顶层VI的另一个副本(即MyVI.vi)。这不会造成任何影响,但是您可以通过转到工具»LLB管理器来从llb中删除副本
  • 方法4:明确指定子VI的目录(即vi.lib目录),作为可执行文件VI搜索路径的一部分

    如果在包含插件的子VI的计算机上运行可执行文件,则可以将子VI的目录(即vi.lib )指定为可执行文件VI搜索路径的一部分。为此,将以下行添加到可执行文件的ini文件中:
    viSearchPath="C:\Program Files\National Instruments\LabVIEW \ vi.lib ; C:\AnotherDirectory ; etc."
    有关更改可执行文件的VI搜索路径的更多信息,请参见如何更改或设置LabVIEW可执行文件的VI搜索路径?
  • 方法5:建立源分发

    为插件VI创建源代码发布 ,确保取消选中以下选项以包括该插件的所有依赖项。

相关信息

当动态调用插件VI时,由于可执行文件无法找到插件的依赖项而可能会导致这个问题。例如,如果您的插件使用vi.lib 中的VI时(例如,简单错误处理VI),则需要以某种方式告诉可执行文件如何找到这些VI。在LabVIEW开发环境中运行顶层VI时,不会发生此行为,因为vi.lib目录被指定为VI搜索路径的一部分(在工具»选项»路径),但不包含在可执行文件中的默认搜索路径。