09-23-2012 09:44 PM
I have a project in which I have set up several lvlibs. The VI's in the Libraries are all in the 2011 inst.lib directory, as are the lvlib files.
When the project was opened in LabVIEW 2012 two of the lvlibs could not seem to find their VI's. I had to go through a series of efforts to sort this out.
While loading LabVIEW kept looking for the Lvlibs in the new 2012 inst.lib directory. Eventually I decided to move all the libraries into the 2012 directory, using the project manager, which ended up making copies in the new directory.
My question is should I have expected LabVIEW update and look for all the files and lvlibs in the directories they had always been in?
By the way, it didn't help that one lvlib was for keithley 6485 which is an IVI and has been a continuing source of problems 🙂
09-24-2012 12:43 PM
Each version of LabVIEW has a instr.lib file located within its version directory. LabVIEW will cannot look for any files it does not know about, so it does not recognize that there is a 2011 version of instr.lib. That is why when you move your files into the new environment path, everything works as expected. This is expected behavior, but I appreciate you bringing up the issue!
09-25-2012 01:15 PM - edited 09-25-2012 01:19 PM
So my experience was that some of my lvlibs did look at the 2011 directory. So I was concerned about those libraries and potentially the VI's now being updated to 2012 but yet still in the 2011 directory.
Ultimately I had to move the lvlib directories (as the lvlib file is saved in the directory with the VI's) using the lvproj, it made copies of the files. This is interesting because it shows that in 2012 some of the lvlibs were found in the 2011 directory, that is how I was able to move them using lvproj, which was actually a copy not a move. The two lvlibs that could not find their VI's I moved using windows.
You answer brings up some sticky questions. Do I have to migrate all PC's that have been given this source code? Will they all have the mixed results, that is, some lvlibs will look to 2011, some to 2012?
What about saving for previous version, will I need to separately set up the lvlib files saved for previous version?
Not sure what is the results having two lvlibs with the same set of VI's. Seems like namespace would be violated.
I realize some of these questions are involved. I am looking at the help files and online info regarding them. If you have some links or answers they would be appreciated.
I'm trying to intercept any possible issues when I have to go distribute updated source code with clients who are migrating to 2012. It already took some unexpected time to sort this out on the dev system, so I hope to find out if these are undocumented features or not. Would prefer documented.
09-26-2012 05:09 PM
If you want LabVIEW 2012 to reliably use your lvlib libraries, you must include them in the instr.lib directory for 2012. It is possible that there are some pathes in your code pointing to the 2011 instr.lib folder. It is recommended that you moved all of the 2011 instr.lib user-created libraries to the 2012 folder. They are separated in the folder hierarchy. If LabVIEW was meant to look into the 2011 instr.lib folder, it would be in a directory where both versions had access. Also, unless these are drivers that you created, I would advise you to use the user.lib library to store your libraries.
As for your second question, are you deploying your code as an executable, or already compiled code? If so, then that should still be fine. If you have development code on separate computers, you will want to copy the instr.lib libraries into the updated directory. I hope this clears things up.