01-11-2019 01:58 PM
Hi Everyone,
I'm pulling my hair out over this issue. I have a large LabVIEW app which uses code from PPL containing the Actor Framework. To be clear, my main application is using the vanilla AF that I built into a PPL. The AF PPL is also used by other PPLs in my application so they can talk to each other in a plug in architecture. In the development environment, everything is great and it works as expected. When I compile it to an EXE, run the exe, all I get is the front panel of the main VI, with an error saying "The VI is not executable. The full development version of LabVIEW is required to fix the errors". I've connected to the EXE using the remote debugger, and from what I can see, everywhere an Actor Framework VI or object is referenced, the call is broken. The error appears to be that the VI or object is missing. If I look at the context help for the missing item, it gives me the path to where it should be on disk. I've verified that the PPL does exist on disk at that location post build. I can open the PPL up and verify that the missing items are there. Does any one know what might be going on? I do have a second PPL that relies on the AF PPL as well, but I've compiled a little test application that calls both and it compiles and runs fine. It's only when its integrated into the larger app that it doesn't compile. Also to be clear, I've made sure that my source is calling the Actor Framework LVLIBP and not the LVLIB that ships with labview. The only things in the source dependencies are in vi.lib.
Here is an example of what I'm seeing during remote debugging:
Here is what it should look like (from development):
Solved! Go to Solution.
01-14-2019 01:04 AM
It might have been addressed in a later version, but does this help?
https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z000000kIHlSAM&l=en-AU
01-14-2019 12:34 PM
Thanks for the response. I've double checked and all my PPLs have debugging enabled.
01-23-2019 01:19 PM
After a lot of trial and error, I think I’ve figured this out. Through selective commenting out of code and then recompiling, I was able to trace the broken EXE down to a VI that was used as a GUI in my lower level PPL. I went through the VI with a fine tooth comb (again of selectively deleting sections of the VI and recompiling the PPL ) and after a couple days, I was able to figure out what VI was causing the broken EXE. Long story short, the engineer who had made the GUI had placed some of the type def’d controls on the front panel in a virtual folder in the project that was marked as Private Scope. When I changed the scope of the controls to Public, the EXE compiled and ran with the original GUI VI. I know that PPLs hide privately scoped items, and I’m thinking that this was causing a run time error. I understand that the way we scoped things was not optimal, but really LabVIEW should have given us better warnings about what was broken.
Weirdly, when my EXE did not run, the Actor Framework PPL was the code that appeared broken (missing Vis, void wires). I say appeared because although the debugger was displacing void wires and missing VI icons, I could still run subvi code via the debugger and it worked fine. Very weird behavior.