Academic Company Events Community Support Solutions Products & Services Contact NI MyNI
19 ratings:
 3.84 out of 5   

How Can I Verify That My DLL Is Executable in LabVIEW Real-Time on NI PharLap ETS?



Primary Software: LabVIEW Modules>>LabVIEW Real-Time Module
Primary Software Version: 2017
Primary Software Fixed Version: N/A
Secondary Software: N/A

Problem:
I have created a DLL that I would like to run on my LabVIEW Real-Time controller that has the NI PharLap ETS operating system. Are there any tools available that will verify whether or not my DLL will be executable in LabVIEW Real-Time on NI PharLap ETS?

Solution:
National Instruments recommends you use CVI Real-Time for C-based shared libraries. This will ensure proper compilation and will allow for remote debugging.

If the shared library is C++-based, National Instruments strongly recommends using the MSVC 2009 or MSVC 2010 compilers. Other compilers may not be supported in LabVIEW Real-Time (NI PharLap ETS) or will require run-time components to be statically linked when compiled, resulting in a larger DLL.

Note: National Instruments strongly recommends that VeriStand users do not statically link MSVC runtimes.

If your DLL works on a Windows machine it may work in LabVIEW Real-Time (NI PharLap ETS). However, the code will fail if it calls functions that are not included in the real-time operating system's subset of Win32 . For example, you may receive an error message similar to the one shown below: 

 

Use the attached utility to determine whether or not the function calls in your DLL are supported on the real-time operating system. Use the version of the utility that corresponds with the version of LabVIEW Real-Time you are using. 

Note: The same version of the utility can be used for LabVIEW Real-Time 2015 and 2016.

There are three categories that functions are sorted into: Good, Stubbed, and Bad (as shown below). 


 

  • Good indicates that the function is supported on the real-time operating system.
  • Stubbed means that calling the function will not cause a deployment error, but the operation has been removed and will return a default value. Code dependent upon proper outputs from stubbed functions may not execute as expected.
  • Bad means that the function has not been exported to the operating system. You cannot deploy code calling unexported functions.
LabWindows/CVI can be used to build a DLL specifically for the LabVIEW Real-Time environment by choosing LabVIEW Real-Time Only for Run-Time Support in Build»Target Settings. While CVI will check for any illegal or unsupported function calls, it does not run an exhaustive test. Use the attached utility to gain further confidence in the ability of your DLL to run properly in LabVIEW Real-Time.

For more information on building a DLL for use in LabVIEW Real-Time, please refer to the links below.

Note: If this utility asks for dependant DLLs (ex: wsock32.dll), always try to use the version that exists on the real-time target or in <National Instruments>/RT Images. These DLLs will sometimes differ from Windows DLLs even though they have the same name.


Automating the DLL Checker

For versions 2013 and later the DLL Checker executable can now be called with additional arguments which specify the DLL to check and the path in which to place a log file with the results. This allows users to automate the check process using a batch script or a program that can invoke the command line, such as LabVIEW.

The argument to pass is:

-- -d "<path to dll>" -l "<path to log file>" -include "<path to DLL includes>"

Here is an example of automating the check in LabVIEW.


-d "<path to dll>" - This flag specifies the path to the DLL you are checking.

-l "<path to log file>" - This flag specifies the path where resulting logs for the check will be stored. If the log file specified in the arguments path does not already exist on disc a new file will be created using the name specified.

-include "<path to DLL includes>" - By default, the DLL checker only checks the main DLL you specify with the -d flag. In order to check dependent .dll's the -include flag should be used. Use this flag to specify the directory for any other .dll that the DLL checker should also check.



Related Links:
KnowledgeBase 320HIP2Y: How Can I Debug a DLL in LabVIEW RT?
KnowledgeBase 3GD9T8SU: Can I Use MS Visual C++.NET (7.x) To Build DLLs Using the Real-Time Workshop for NI Real-Time Targets?
Tutorial: Using LabWindows/CVI DLLs in LabVIEW Real-Time Applications


Attachments:


DLL Checker 2017.exeDLL Checker 2017.exeDLL Checker 2016.exeDLL Checker 2016.exeDLL Checker 2015.exeDLL Checker 2015.exeDLL Checker 2013.exeDLL Checker 2013.exeDLL Checker 2014.exeDLL Checker 2014.exeDLL Checker 2011.exeDLL Checker 2011.exeDLL Checker 2012.exeDLL Checker 2012.exeDLL Checker 2009.exeDLL Checker 2009.exeDLL Checker 2010.exeDLL Checker 2010.exeDLL Checker 8.6.exeDLL Checker 8.6.exe


Report Date: 07/23/2004
Last Updated: 10/04/2017
Document ID: 3BMI76L1

Your Feedback! poor Poor  |  Excellent excellent   Yes No
 Document Quality? 
 Answered Your Question? 
  1 2 3 4 5
Please Contact NI for all product and support inquiries.submit