04-09-2008 12:46 PM
04-10-2008 08:48 AM
::bump::
Anyone? I would have expected this to be a fairly regular question in the forum, but I can't find anything. Even a simple confirmation that LabVIEW doesn't support this would be useful. Thanks,
Rob
04-10-2008 09:11 AM
04-10-2008 09:35 AM
Thanks for the pointer. I read through the thread, but I'm still a bit confused. From the thread, it wasn't clear to me how (or even if) the main application was working around needing to build the plug-ins into the executable. I already have a working scheme for how to enumerate all the "plug-ins" and call them based on a configuration. But, in order for it to work from the built executable, every plug-in subVI needs to be built into the executable. Therefore, whenever a new plug in is created, I have to re-build every application that uses this mechanism. It isn't a show-stopper at this point, but it certainly isn't robust.
If there is some mechanism that can be used to accomplish this, please help me understand. Maybe I just didn't get something in the thread.
Thanks for you help,
Rob
04-10-2008 10:20 AM
04-10-2008 10:26 AM
Thanks very much for taking the time to do that, but would it be possible for you to convert it to LabVIEW 7.0? I'm not able to open up any of the files... Or maybe even just a basic description of how the build is managed and how the plug-in call is made? I'm using call-by-reference and it always returns error 1003 if I attempt to call a subVI that wasn't declared in the build script as a "dynamic VI". I am assuming that the build script requires this because the VI is built into the executable.
Rob
04-10-2008 10:40 AM - edited 04-10-2008 10:42 AM
04-10-2008 01:50 PM
Hello again,
Thanks for the info. It looks like the problem is different in my case then. It sounds like it is related to shared subVIs similar to the thread you pointed me to earlier. I was under the impression that it may be a limitation due to this KB article: http://digital.ni.com/public.nsf/allkb/410F2EC66F60F9B0862569EE006F4FA0. It makes it sound like there is no way to accomplish true plugin functionality.
Anyway, I was able to get the simple example (and a simple test one of my own) working based on your responses, but I'm still struggling with getting my actual executable working correctly. Based on what I've read so far, it sounds like there may be an issue with shared subVIs that are needed by my plugins being already loaded by my executable. For example, say I have a subVI, "A.vi", which is used by the main executable and some or all of the plugins. When I build the executable, it loads A.vi into the executable. Then when it attempts to load the plugin, the discrepancy between the location it expects this subVI to be at, and the actual location (within the exe) causes error 1003. Do this sound correct? And if so, does this mean I have to make separate copies of all of these subVIs?
From the other thread, it sounds like they were recommending creating a whole separate copy of all dependencies all in a separate "namespace" (I assume that means from the LabVIEW 7.0 perspective - rename every single VI). This could include a ton of code, much of it vi.lib code that I'd rather not duplicate. Let me know if I'm missing something - this seems like an extremely tedious solution.
Thanks,
Rob
04-10-2008 02:13 PM
04-10-2008 03:11 PM
I've been trying to reproduce the problem with as simple code as possible, but I haven't actually been able to yet. The reason I bring it up is that I'm afraid there must be some subtlety that I still don't understand. I'll attach the simple program I've been trying to reproduce the issue with.
Basically, I have a VI, "DynamicCaller.vi", which is the main application VI. It calls "DisplayString1.vi" and "DisplayString2.vi" dynamically based on user input. TestMessage is used in both the VI that gets compiled, as well as DisplayString1 which does not. I figured this should introduce the inconsistency that was causing me to get error 1003. But alas, everything works fine! ??? I guess there must be some other issue or complication that is causing the fundamental problem I'm seeing... Any ideas?
Thanks.