I Can Use My DLL in LabVIEW 2009 or Earlier but It Crashes in LabVIEW 2010 or Later

Updated Aug 31, 2023

Reported In

Software

  • LabVIEW

Issue Details

Why can I use my DLL in LabVIEW 2009 or earlier, but it crashes in LabVIEW 2010 and later?
 

Solution

Maximum error checking in the Call Library Function Node checks for a mismatch in the calling convention (stdcall vs. C) and other corruptions.  In LabVIEW 8.2 through 2009, selecting the incorrect calling convention would cause LabVIEW to automatically change to the correct calling convention and report Error 1517 or 1097 occurred at Call Library Function Node.

Due to some compiler optimizations in LabVIEW 2010 and later, it is no longer detected whether the calling convention is incorrect.  If the incorrect calling convention is used, LabVIEW may crash.

If your DLL used to work in earlier versions of LabVIEW, but crashes LabVIEW 2010 or later, set the error handling to maximum in the original version of LabVIEW and see if the Call Library Function Node outputs an error. If it does report an error, this is an indication that the calling convention is not correct and you may need to manually change the calling convention or make other changes in your setup. Instructions on how to change the calling convention can be found in the LabVIEW Help topic: Configuring the Call Library Function Node.