11-09-2015 07:09 AM
I am trying to figure out PPLs and have been struggling to fully understand how they work with external dependencies(in this case other PPLs).
For the sake of an example lets say we have two PPLs A and B. PPL A and PPL B both contain a single class. The class within PPL B inherts from the class within PPL A. I think it goes without saying that PPL A is built first and then the source of PPL B is setup to point to PPL A. When building PPL B the option to Exclude dependent packed libraries us checked. The destination of both builds is pointed to the same folder.
Given this setup should I be able to open PPL B into LabVIEW when nothing else is loaded into memory? Another way of asking the question, should I expect LabVIEW to be able to find the external dependencies of PPL B on it's own?
Solved! Go to Solution.
11-10-2015 04:49 PM
Hey PBD_ctrl,
This is Henry from National Instruments Applications Engineering. This is something which I believe can be possible however you would need to make sure all depencies are pointing to the right class or that the classes or files are in the right location so that a PPL can find them. One resource which may be helpful in explaining how nested PPL's work and things to look for is at the following link.
Also, this is defintely something which I would recommend just trying out to see what happens or what errors it gives you. If you are receiving some errors you should post them on here so myself and others can help you sort them out.
Best,
hfar2
11-10-2015 07:36 PM
Your recommendations are spot on. I created a simple example and found that it should in fact work as long as the all of the dependencies are in good order. When working with PPLs it is best to experiment with small scale distributions first to learn their nuances.
My problem stemmed from trying to build PPLs for distribution within vi.lib. Excluding external dependencies never seemed to work as expected(even when building into vi.lib directly). To get a functioning PPL I included all external PPLs and setup a folder structure in the build spec that mirrored the relative path of the final installation directory. After that everything worked like a charm.