Well, I must have confused myself with that "solution" because it doesn't really work. As described previously, my top level vi calls two subvi's, one that intializes the matlab dll, and one that terminates it. Here are some further observations:
If the Top Level VI is in the same directory with the matlab dll (and it's 90+ friends) the vi will run without incident. However, I would like to avoid having my top level vi sitting there with all those dlls, so I am experimenting with moving it around.
If the top level vi is in another directory and LabVIEW is launched and the vi run, crash. BUT, if I open LabVIEW, and select browse on a path control and select the directory (or a file in the directory) that contains the dlls, then run, no problem. This is actually what was occurring in my first post, but I didin't realize it. It is not necessary to configure the Call Library Function nodes; all that needs to be done is somehow change the Working Directory to the directory containing the dlls. Unfortunately, I can't figure out how to do this programmatically. I've tried playing with System Exec, but the Working Directory doesn't keep after the call is completed. I've also tried opening a file from the directory, but this doesn't seem to change the WD at all.
Any thoughts or insights would be appreciated. I'd like to know what actually happens behind the scenes when a file/directory is selected from the dialog. This problem seems to be localized to handling dlls generated from Matlab because so many external dlls are required to be called dynamically.
Thanks,
Chris