 
ni.com
ni.com
Building Applications and
Creating DLLs in LabVIEW
™
Kyle P. Gupton
LabVIEW R&D Group Manager
Thurs Aug 17
12:00-1:15 p.m., 3:30-4:45
p.m.
Cedar (8C)
 
ni.com
ni.com
Topics
Topics
 System requirements
 Project architecture
 Building the application or shared 
library
 Creating the installer
 System requirements
 Project architecture
 Building the application or shared 
library
 Creating the installer
 
ni.com
ni.com
Development Requirements
Development Requirements
 Building applications and shared libraries
• LabVIEW Professional Development System
OR
• LabVIEW Base Package or Full Development
System + Application Builder
 Building shared libraries
• MPW ToolServer (Macintosh)
• GNU C Compiler (All UNIX platforms) OR
• Unbundled C Compiler (Solaris only)
 Building applications and shared libraries
• LabVIEW Professional Development System
OR
• LabVIEW Base Package or Full Development
System + Application Builder
 Building shared libraries
• MPW ToolServer (Macintosh)
• GNU C Compiler (All UNIX platforms) OR
• Unbundled C Compiler (Solaris only)
 
ni.com
ni.com
Deployment Requirements
Deployment Requirements
 All applications or shared libraries built
in LabVIEW require the LabVIEW Run-
Time engine
 In LabVIEW 6i, this is true on all
platforms
 All applications or shared libraries built
in LabVIEW require the LabVIEW Run-
Time engine
 In LabVIEW 6i, this is true on all
platforms
 
ni.com
ni.com
Project Architecture
Project Architecture
 All LabVIEW projects have a high-level
architecture
 Typical high-level architectures of
LabVIEW projects include:
• Top-level VIs only
• Top-level VIs and dynamically-called VIs
 Note that this architecture is
independent of how you save the VIs on 
disk
 All LabVIEW projects have a high-level
architecture
 Typical high-level architectures of
LabVIEW projects include:
• Top-level VIs only
• Top-level VIs and dynamically-called VIs
 Note that this architecture is
independent of how you save the VIs on 
disk
 
ni.com
ni.com
Top-Level VIs Only
Top-Level VIs Only
 One or more top-level VIs
 All other VIs are subVIs of the top-level 
VIs
 The simplest LabVIEW architecture
 One or more top-level VIs
 All other VIs are subVIs of the top-level 
VIs
 The simplest LabVIEW architecture
 
ni.com
ni.com
Top-Level VIs and Dynamic 
VIs
Top-Level VIs and Dynamic 
VIs
 Consists of one or more top-level VIs
with other VIs dynamically called via the 
VI Server
 The dynamic VIs are not part of the
hierarchies of the top-level VIs
 Most advanced LabVIEW projects are a
variant of this architecture
 Consists of one or more top-level VIs
with other VIs dynamically called via the 
VI Server
 The dynamic VIs are not part of the
hierarchies of the top-level VIs
 Most advanced LabVIEW projects are a
variant of this architecture
 
ni.com
ni.com
Architectures and Build 
Targets
Architectures and Build 
Targets
 In an application, the top-level VIs run
when you launch the application
 In a shared library, the top-level VIs are
exported functions within the library
 In an application, the top-level VIs run
when you launch the application
 In a shared library, the top-level VIs are
exported functions within the library
 
ni.com
ni.com
Building the Target
Building the Target
 Project architecture
 Prototypes for exported VIs (shared 
library only)
 Desired packaging
 Other files needed
 Project architecture
 Prototypes for exported VIs (shared 
library only)
 Desired packaging
 Other files needed
 
ni.com
ni.com
Building an Application
Building an Application
 VIs that you build into the application
are classified as:
• Top-level VIs
• Dynamic VIs
 Your application must always have at
least one top-level VI
 VIs that you build into the application
are classified as:
• Top-level VIs
• Dynamic VIs
 Your application must always have at
least one top-level VI
 
ni.com
ni.com
Building an Application 
(cont.)
Building an Application 
(cont.)
 Basic results of building an application
• Executable file
• ActiveX type library (if ActiveX server 
enabled)
 Basic results of building an application
• Executable file
• ActiveX type library (if ActiveX server 
enabled)
 
ni.com
ni.com
Building a Shared Library
Building a Shared Library
 VIs that you build into a shared library
are classified as:
• Exported VIs
• Dynamic VIs
 Your shared library must always have at
least one exported VI
 VIs that you build into a shared library
are classified as:
• Exported VIs
• Dynamic VIs
 Your shared library must always have at
least one exported VI
 
ni.com
ni.com
Building a Shared Library 
(cont.)
Building a Shared Library 
(cont.)
 For each exported VI, you specify the
following information
• Function name
• Calling convention
• Parameter list
 This information forms the prototype
used when calling the function from 
another program
 For each exported VI, you specify the
following information
• Function name
• Calling convention
• Parameter list
 This information forms the prototype
used when calling the function from 
another program
 
ni.com
ni.com
Building a Shared Library 
(cont.)
Building a Shared Library 
(cont.)
 Basic results of building a shared library
• Shared library file
• Embedded type library on Windows 
(sometimes)
• Header file
• Import library
 Basic results of building a shared library
• Shared library file
• Embedded type library on Windows 
(sometimes)
• Header file
• Import library
 
ni.com
ni.com
Desired Packaging
Desired Packaging
 LabVIEW can package the build target in
two forms
• Single file (executable or shared library)
• Single file and one VI library
 LabVIEW can package the build target in
two forms
• Single file (executable or shared library)
• Single file and one VI library
 
ni.com
ni.com
Single File Package
Single File Package
 All VIs and their subVIs are embedded in
the resulting executable or shared 
library file
 This can result in a rather large file
 All VIs and their subVIs are embedded in
the resulting executable or shared 
library file
 This can result in a rather large file
 
ni.com
ni.com
Executable and VI Library 
Package
Executable and VI Library 
Package
 Top-level (or exported) and dynamic VIs
are embedded in the resulting 
executable or shared library file
 All subVIs are stored in a single VI
library
 Top-level (or exported) and dynamic VIs
are embedded in the resulting 
executable or shared library file
 All subVIs are stored in a single VI
library
 
ni.com
ni.com
Other Files Needed
Other Files Needed
 Your application or shared library can
require the presence of other non-VI 
files, including –
• Preferences file (application only)
• Help files that your VIs call
 LabVIEW automatically includes run-
time menu (.mnu) files and DLL files 
called via the Call Library Node
 Your application or shared library can
require the presence of other non-VI 
files, including –
• Preferences file (application only)
• Help files that your VIs call
 LabVIEW automatically includes run-
time menu (.mnu) files and DLL files 
called via the Call Library Node
 
ni.com
ni.com
Application Preferences File
Application Preferences File
 Every application can have a
preferences file resembling the LabVIEW 
preferences file
 If your application requires specific
LabVIEW preferences, you must 
replicate these settings in the 
preferences file for your application
 Every application can have a
preferences file resembling the LabVIEW 
preferences file
 If your application requires specific
LabVIEW preferences, you must 
replicate these settings in the 
preferences file for your application
 
ni.com
ni.com
VI Settings
VI Settings
 You can modify the settings for all VIs in
an application or shared library
 LabVIEW removes the diagrams from all
VIs and the panels from all non-user-
interface VIs by default
 You can modify the settings for all VIs in
an application or shared library
 LabVIEW removes the diagrams from all
VIs and the panels from all non-user-
interface VIs by default
 
ni.com
ni.com
Other Options
Other Options
 Custom icon (Windows)
• Specify an icon (.ico) file to use for the
application icon or windows displayed by the 
shared library
• Create this file in applications such as
LabWindows
™
/CVI and Microsoft Visual Studio
 ActiveX Server (Windows)
• Select whether to enable the ActiveX Server
capabilities for the application
• Specify the name of the server
 Custom icon (Windows)
• Specify an icon (.ico) file to use for the
application icon or windows displayed by the 
shared library
• Create this file in applications such as
LabWindows
™
/CVI and Microsoft Visual Studio
 ActiveX Server (Windows)
• Select whether to enable the ActiveX Server
capabilities for the application
• Specify the name of the server
 
ni.com
ni.com
Other Options (cont.)
Other Options (cont.)
 Default memory size (Macintosh)
• Specify the preferred memory size for the
application
 Default memory size (Macintosh)
• Specify the preferred memory size for the
application
 
ni.com
ni.com
Creating the Installer 
(Windows)
Creating the Installer 
(Windows)
 You must include all files to be installed
in the source files list
 Any file in the distribution can receive
an associated program item
 By specifying custom destinations, you
can create directory structures during 
installation
 You must include all files to be installed
in the source files list
 Any file in the distribution can receive
an associated program item
 By specifying custom destinations, you
can create directory structures during 
installation
 
ni.com
ni.com
Advanced Installer Settings
Advanced Installer Settings
 Run executable after installation
• This file must be one of the files installed in
the “Install Directory”
 Install LabVIEW Run Time Engine
 Enable this option to have installer also
install the LabVIEW Run Time Engine on the 
target system
 Run executable after installation
• This file must be one of the files installed in
the “Install Directory”
 Install LabVIEW Run Time Engine
 Enable this option to have installer also
install the LabVIEW Run Time Engine on the 
target system
 
ni.com
ni.com
Installing Other Components
Installing Other Components
 Most applications require other software
• NI-DAQ
• NI-488.2
• NI-VISA
• ODBC drivers
• ActiveX controls
 You can launch installers for these with
a batch file
 Most applications require other software
• NI-DAQ
• NI-488.2
• NI-VISA
• ODBC drivers
• ActiveX controls
 You can launch installers for these with
a batch file
 
ni.com
ni.com
Results of the Build Process
Results of the Build Process
 Directory that contains an image of your
complete file set
 Directory that contains disk images of
the installer
 Directory that contains an image of your
complete file set
 Directory that contains disk images of
the installer
 
ni.com
ni.com
Demonstration
Demonstration
 
ni.com
ni.com
Topics
Topics
 System requirements
 Project architecture
 Building the application or shared 
library
 Creating the installer
 System requirements
 Project architecture
 Building the application or shared 
library
 Creating the installer
 
ni.com
ni.com
Question and Answer
Question and Answer