Error 1097 Occurred at Call Library Function Node

Updated Aug 21, 2023

Reported In

Software

  • LabVIEW

Operating System

  • Windows
  • PharLap

Issue Details

  • My LabVIEW code references an external DLL. When I run my program, I get a message that says Error 1097 occurred at the Call Library Function node, but my program does not stop execution.
  • How can I troubleshoot error 1097 in LabVIEW?
  • What causes error 1097 to occur at the Call Library Function Node?

Error 1097: LabVIEW (Hex 0x449): An exception occurred within the external code called by a Call Library Function Node. The exception might have corrupted the LabVIEW memory. Save any work to a new location and restart LabVIEW.
 

Solution

LabVIEW error 1097 often occurs due to an exception being passed inside the DLL that LabVIEW is unable to process. There are two main causes of this:
1. The Call Library Function Node parameter datatypes or array format are incorrectly configured.
2. Memory is being incorrectly handled by your program.


Troubleshooting steps:

  • Ensure that the DLL works properly outside of LabVIEW, and that the Call Library Function Node parameter datatypes are configured to match the datatypes expected by the DLL function. 
  • The DLL may be designed specifically for 32-bit (or 64-bit) applications. Calling it on LabVIEW 32-bit (or 64-bit) may resolve the error. 
  • Error 1097 may also indicate that memory is being handled improperly by your program due to improper calling convention in your Call Library Function Node.
  • The stdcall (WINAPI) convention expects that the DLL will handle memory usage, while the C calling convention expects that LabVIEW will handle memory usage. Using the stdcall (WINAPI) convention improperly can result in un-handled memory. The calling convention can be configured by double-clicking your node and changing the selection, as shown in the image below.
 

Additional Information

If you select "Array Data Pointer" for the "Array Format" node parameter, you will need a pair of DLL arguments: the array itself and the array size of that array. But, if there is no array size argument, "Array Handle" should be selected.