LabVIEW应用程序(EXE)无法正确动态调用插件

简介: LabVIEW应用程序(EXE)无法正确动态调用插件

LabVIEW应用程序(EXE)无法正确动态调用插件


正在构建一个应用程序并使用插件架构,以便可以动态调用将来创建的VI(插件)。应用程序在LabVIEW开发环境中可以正常运行,但不能作为可执行程序运行。


运行可执行文件时,将发生以下情况之一:


应用程序似乎什么也没做,好像从未调用过插件


收到错误1003,指示VI不可执行


收到一个对话框,要求查找“丢失”的子VI


解决方案


下面概述了几种可用于解决此问题的方法:


方法1:将子VI包含在与插件相同的目录中


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


方法2:将插件另存为LLB


通过选择文件»使用选项保存»应用程序分发,将的插件另存为LLB。这会自动将所有子VI(包括引用的VI)保存到一个LLB文件中。有关创建LLB的更多信息,请参阅如何创建自动包含所有子VI的LabVIEWVI库vi.lib


方法3:将插件创建为单个顶级VI,并将子VI另存为LLB


这是方法1和2的组合。首先像往常一样保存的顶级VI(即MyVI.vi)。然后按照方法2(即MyVI.llb)中指定的方式保存的VI。这实际上将创建一个子目录(MyVI.llb),其中包括必要的子VI。注意:LLB还包括的顶级VI的另一个副本(即MyVI.vi)。这不会造成任何伤害,但是可以通过转到“工具»编辑VI库”从llb中删除副本。


方法4:明确指定子VI的目录(即vi.lib目录)作为可执行文件的VI搜索路径的一部分


如果在包含插件子VI的机器上运行可执行文件,则可以指定子VI的目录(即)作为可执行文件的VI搜索路径的一部分。为此,请将以下行添加到可执行文件的ini文件中:有关更改可执行文件的VI搜索路径的更多信息,请参阅如何更改或设置LabVIEW可执行文件的VI搜索路径?vi.lib

viSearchPath="C:\Program Files\National Instruments\LabVIEW \vi.lib ; C:\AnotherDirectory ; etc."

方法5:构建源分发

为插件VI创建源分发,确保取消选中以下选项以包含插件的所有依赖项。

附加信息


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


IssueDetails


I ambuilding an application and using a plug-in architecture so I can dynamicallycall VIs (plug-ins) that I create in the future. My application works correctlyin the LabVIEW development environment, but not as an executable.



Whenrunning the executable one of the following occurs:


Myapplication seems to do nothing, as if the plug-in was never called


I receiveError 1003 indicating that the VI is not executable


I receivea dialog asking me to find the "missing" subVIs


Solution


There aseveral method outlined below that may be used to resolve this issue:


Method 1: Include the subVIs in the samedirectory as the plug-in


Save thesubVIs that your plug-in uses in the same location as the plug-in. You can alsoinclude these subVIs in a folder that is located in the same directory as theplug-in. This works because the default VI Search Path for an executableincludes the path of the executable and its sub-directories. Note: you mustinclude all of the VI's dependencies, including sub-subVIs, etc.


Method 2: Save your plug-in as an LLB


Save yourplug-in as an LLB by selecting File»Save with Options»Application Distribution.This automatically saves all of the subVIs (including referenced vi.lib VIs)into one LLB file. For more information on creating LLBs, see How Do I Create aLabVIEW VI Library that Automatically Includes All SubVIs?


Method 3: Create your plug-in as a singletop-level VI and save your subVIs as an LLB


This is acombination of Methods 1 & 2. First save your top-level VI as usual (i.e.MyVI.vi.). Then save your VI as specified in Method 2 (i.e. MyVI.llb). Thiswill in effect create a sub-directory (MyVI.llb), which includes the necessarysubVIs. Note: the llb also includes another copy of your top-level VI (i.e. MyVI.vi.).This does not hurt anything, but you can delete the copy from the llb by goingto Tools»Edit VI Library.


Method 4: Explicitly specify the directory ofyour subVIs (i.e. vi.lib directory) as part of the VI Search Path for yourexecutable


If you arerunning the executable on a machine which includes the plug-in's subVIs, youcan specify the directory of the subVIs (i.e. vi.lib) as part of the VI SearchPath for the executable. To do so, add the following line to the executable'sini file:


viSearchPath="C:\ProgramFiles\National Instruments\LabVIEW \vi.lib ; C:\AnotherDirectory ; etc."


For moreinformation on changing the VI Search Path of an executable, please referenceHow Can I Change or Set the VI Search Path for LabVIEW Executables?


Method 5: Build a Source Distribution


Create asource distribution for the Plug-in VI, make sure to uncheck the followingoptions to include all dependencies for the plug-in.


AdditionalInformation


Thisbehavior can be caused when a plug-in VI is called dynamically, but is unableto run because the main-level executable cannot locate the plug-in'sdependencies. For instance, if your plug-in uses vi.lib VIs (such as the SimpleError Handler VI) you will need to somehow tell the top-level executable how tofind these VIs. This behavior does not occur when running the top-levelapplication in the LabVIEW development environment because the vi.lib directoryis specified as part of the VI Search Path (in Tools»Options»Paths»VI SearchPath), but is not included by default in executables.


需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。

相关文章
|
5天前
LabVIEW应用程序exe和安装程序的区别
LabVIEW应用程序exe和安装程序的区别
15 3
|
5天前
|
XML 数据格式 Windows
LabVIEW中调用共享库
LabVIEW中调用共享库
10 0
|
5天前
|
Go Windows
LabVIEW报错-2147023537注册Com组件
LabVIEW报错-2147023537注册Com组件
|
5天前
|
存储 API Windows
新建MFC桌面应用程序
新建MFC桌面应用程序
11 0
|
5天前
MFC编写DLL窗口功能代码
MFC编写DLL窗口功能代码
8 0
|
5天前
|
定位技术 数据处理 C++
Visual Studio软件调用已经配置、编译好的C++第三方库的方法
Visual Studio软件调用已经配置、编译好的C++第三方库的方法
|
Windows
【解决方案】VS2013外部工具中添加ildasm.exe
【解决方案】VS2013外部工具中添加ildasm.exe
155 0
【解决方案】VS2013外部工具中添加ildasm.exe
|
编译器 Linux C语言
【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )
【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )
239 0
【C 语言】动态库封装与设计 ( Windows 动态库简介 | Visual Studio 调用动态库 )
|
C# 图形学 C++
Unity与 DLL文件 ☀️| 怎样使用 C# 类库 生成一个DLL文件 并 调用!
📢前言 🎬生成DLL文件 🎥使用 C#类库 将Unity中的脚本打包成 DLL文件 并调用 🏳️‍🌈第一步:打开Visual Studio之后,新建一个项目 🏳️‍🌈第二步:选择类库(.NET Framework),改个名字,选择一个位置路径 🏳️‍🌈第三步:然后在创建的脚本中简单写一点代码,如下所示 🏳️‍🌈第四步:然后在解决方案资源管理器右键这个脚本 -> 添加 -> 引用 🏳️‍🌈第五步:然后点击浏览,找到Unity安装路径 -> Editor -> Data -> Managed 下的这两个DLL 文件,点击添加!
Unity与 DLL文件 ☀️| 怎样使用 C# 类库 生成一个DLL文件 并 调用!
|
安全 IDE 小程序
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)
209 0
QT应用编程: Visual Studio里编写activex控件在网页中运行(dll插件形式)