If you want to change the target of a library to one with the same filename, anywhere else on disk, you must completely unload the library from all VIs in memory before doing so. If both A.vi and B.vi call library.dll (or library.so on Linux) and you go into one of those VIs and change the path to the library, it will not actually be updated! You need to unload the other VIs that access the library before making the change (you should not have to restart LV though).
ALSO, you cannot call two libraries (which reside in different directories) that have the same name.
You could use symbolic links to point at two libraries with the same file name. Useful for testing, but you would have to go an change all references to the library when you were ready to call the "released" name.
jed
Craig Graham wrote:
I'm playing with a shared library in Linux Labview. The library needs some development work.
I've come across two annoyances and wonder if anyone has a solution; 1) When rebuilding the library, I have to exit and restart Labview before the new library is picked up- otherwise a cached copy of the one that no longer exists on the disk is used. Maybe I can also close all VIs but that's as inconvenient when developing!
2) I can't seem to specify non-standard library paths in the "Call Library Node"; if I change it to my build directory in order to use the new version instead of the system version, the path appears to change OK but when I go back into the Call Library configuration, the old library path is still there. Oddly, erasing the path does work because the VI becomes broken when I "OK" the change.
Both may be related, since 2) may be because the new library is the same name as one already cached when the VI loaded.
Is there a way to force LV to reload libraries?
-- Dr. Craig Graham, Software Engineer Advanced Analysis and Integration Limited, UK. http://www.aail.co.uk/
