As a Windows C/C++ DLL, the RSA API can be used in many C/C++ development environments including National Instruments LabWindows/CVI. However, due to the way LabWindows/CVI 2010 handles the loading of external .DLLs, the compiled executable will experience a fatal run-time error. When this occurs you will receive a message like the following:
FATAL RUN-TIME ERROR
Unknown source position, thread id 0x0000XXXX
A non-debuggable thread caused a ‘General Protection’ fault at address 0xXXXXXXXX.
Please note: this issue has been confirmed to exist in LabWindows/CVI 2010 and may exist in other versions of LabWindows/CVI as well. LabWindows/CVI 2015 has shown not to exhibit this problem.
National Instrument has confirmed this issue with other external libraries and has written up a KnowledgeBase article showing how to fix the issue. You can read this article at the following URL.
This article explains how to add keys to your Windows Registry to force LabWindows/CVI to load the external .DLLs in a specified order. This technique will be used to load the RSA API .DLLs in the proper order so that the built executable will not experience a fatal run-time error.
The simplest way to add the keys to your registry is to run the following registry script.
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\National Instruments\CVI\10.0\DLL Load Order] "DLL1"="RSA_API.dll" "DLL2"="RSA300API.dll" "DLL3"="RSA500API.dll" "DLL4"="BaseDSP.dll" "DLL5"="GPMeasDSP.dll"
Open Notepad.exe and Copy and paste the script above into the Notepad window.
Go to the File menu and select Save As…
Save the file to your computer’s Desktop as a .reg file. Enter the filename and then change the Save as type to All Files (*.*) then click the Save button.
Navigate to the folder where you saved the .reg file. Double-click the .reg file to launch the Registry Editor.
Click Yes to allow the changes to be made and the new Registry keys to be added.
Rebuild your LabWindows/CVI project. Your executable should now run without a Fatal Run-time Error.