使用当前VI路径时,可执行文件报错Error 7

更新 Oct 19, 2023

适用于

软件

  • LabVIEW Application Builder Module

问题详述

我使用VI路径节点来得到当前VI的路径,拆分当前VI名,再添加需要打开的文件名。这样操作之后在开发环境中可以运行并得到想要的结果,但是当把这个程序编译成可执行文件之后,该程序就会出现问题,包括但不限于错误提示:在新文件中发生错误7 (Error 7 occurred at New File. )。
在将其部署为可执行文件时,如何构建VI可以避免路径更改?

解决方案

在LabVIEW 2009及更高版本中,您可以使用应用程序目录VI。

如果在可执行文件中调用此VI,则此VI将返回包含此应用程序的文件夹的路径。如果从开发环境中调用此VI并将VI加载到LabVIEW项目文件( .lvproj )中,则此VI将返回包含项目文件的文件夹的路径。如果未保存项目,则此VI将返回<非法路径> 。如果未在项目中加载顶层VI,则VI返回包含顶级VI目录的路径。如果顶层VI未保存到磁盘,则此VI返回<非法路径>。

对于低于LabVIEW 2009年的版本,您可以使用应用程序属性节点(Application  property node »类别以编程方式确定目前VI运行在哪种环境下,这种方式可以对路径拆分一次或两次。具体的编程操作如下图所示:

另一个方式是使用应用程序目录路径属性节点(Application Directory property node)来查找可执行文件的运行目录。

请注意,最左边的VI是打开应用程序引用,而不是打开VI引用。此外,由于此属性节点搜索的是运行LabVIEW的可执行文件,因此在开发环境下,此属性将返回当前LabVIEW实例的路径。

 

相关信息

当前VI路径返回包含VI名称的完整路径。该路径根据VI是在LabVIEW开发环境中运行还是在独立应用程序中运行而发生变化。 LabVIEW将与独立应用程序关联的所有VI打包到一级路径中,这级路径实际上是可执行文件本身。

若名为 Application. vi 的 VI位于硬盘驱动器的根目录(例如C:\ )。在LabVIEW开发环境中,当前VI路径返回:
C:\ Application. vi


若在名为MyApplication.exe的独立应用程序中内置相同的VI中。运行时,当前VI路径返回:
C: \ MyApplication.exe \ Application. vi

从上面不同的文件路径可以看出,根据VI是在开发环境中运行还是在独立的可执行文件上运行,需要以不同方式拆分路径。
解决此问题的更简单方法是在利用当前VI路径得到的结果中搜索.exe如果路径中不存在".exe"的关键词,则只需拆分路径一次即可得到运行VI的文件夹信息。如果路径中包含".exe",则需要拆分路径两次才能够得到文件夹信息。