My Application (EXE) Does Not Dynamically Call My Plug-Ins Correctly

Updated Nov 17, 2023

Reported In

Software

  • LabVIEW Application Builder Module

Issue Details

I am building an application and using a plug-in architecture so I can dynamically call VIs (plug-ins) that I create in the future. My application works correctly in the LabVIEW development environment, but not as an executable.

When running the executable one of the following occurs:
  • My application seems to do nothing, as if the plug-in was never called
  • I receive Error 1003 indicating that the VI is not executable
  • I receive a dialog asking me to find the "missing" subVIs

Solution

There a several method outlined below that may be used to resolve this issue:
 
  • Method 1: Include the subVIs in the same directory as the plug-in

    Save the subVIs that your plug-in uses in the same location as the plug-in. You can also include these subVIs in a folder that is located in the same directory as the plug-in. This works because the default VI Search Path for an executable includes the path of the executable and its sub-directories. Note: you must include all of the VI's dependencies, including sub-subVIs, etc.
   
  • Method 3: Create your plug-in as a single top-level VI and save your subVIs as an LLB

    This is a combination 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). This will in effect create a sub-directory (MyVI.llb), which includes the necessary subVIs. 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 going to Tools»Edit VI Library
 
  • Method 4: Explicitly specify the directory of your subVIs (i.e. vi.lib directory) as part of the VI Search Path for your executable

    If you are running the executable on a machine which includes the plug-in's subVIs, you can specify the directory of the subVIs (i.e. vi.lib) as part of the VI Search Path for the executable. To do so, add the following line to the executable's ini file:
    viSearchPath="C:\Program Files\National Instruments\LabVIEW \vi.lib ; C:\AnotherDirectory ; etc."
    For more information on changing the VI Search Path of an executable, please reference How Can I Change or Set the VI Search Path for LabVIEW Executables?
 
  • Method 5: Build a Source Distribution

    Create a source distribution for the Plug-in VI, make sure to uncheck the following options to include all dependencies for the plug-in.

Additional Information

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