LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Including External LVOOP Public Methods in Executable

Hello,

I have an application which on the top level must 'talk' to several different instruments; a LabJack UE9 (USB) , a Newport Motion Controller (USB-Serial), etc.    When I wrote the drivers for these instruments in LV, I used the LVOOP functionality and created individual Classes with public methods for each of the different devices I need to communicate with.  Sounds logical to me, anyway. 

In my top-level application, I call the public methods (and must include local instances of the LVOOP classes) for those independant instrument-specific classes.  In the development mode, everything works peachy.   However, when I go to build the application executable (build), I get some weird behavior;

Firstly, with the default setting in 'Additional Exclusions' in the Build Properties of 'Remove as much as possible', I get errors when the builder gets to my independent classes.  I get the message:

"An error occurred while building the following file:

C:\Documents and Settings\Wes Ramm\My Documents\Projects\RDT\LabJack\Class\Common Methods\Get DO Line State.vi

The VI became broken after disconnecting type definitions. Open the Build Specification and choose a different option on the Additional Exclusions page."

Ok, it seems that the class object is not linking, but I can get around that by selecting the second option in 'Additional Exclusions' ; 'Remove unreferenced project library members'.  BUT, when the build is done, I get a couple of subdirectories with vi's named for all the different class methods for each independent that I am calling.  There is no front panel or block diagram for the vis, so it looks like they are correctly 'included' in the build, but it seems cumbersome to include these subdirectories.

I even tried to 'add' the independant classes to the project by 'Add Folder', but got the same behavior. 

The classes that I made are not a part of the top level VI, and the top Leve VI is not a member of any of the classes, so this I think is the crux of the matter.  However, I am instantiating only the public methods, and the problems only pop up when I try to build the executable.

Am I missing something?  Is there a more elegant way to do this?  Any advise / tutorials / knowledgebase articles you can point me to?


The tree for the directory structure for my build looks like this (for reference)

\\Application Directory\
                         Executable
                         \Config
                                  \ Class One.lvclass  (first external class that I am calling in my top-level vi)
                                      \ Method 1
                                      \ Method 2
                                      \ Method 3
                                       \ etc
                                  \ Class Two.lvclass
                                        \Method 1
                                        \Method 2
                                        \Method 3
                                        \ etc

Thanks,

Wes Ramm




--------------------------------------------------------------------------------------
Wes Ramm, Cyth UK
CLD, CPLI
Message 1 of 2
(2,717 Views)

Hello Wes Ramm,

It's better late than never! Hence I'm going to address some of the issues that you've brought up.

1) Which version of LabVIEW are you using? LabVIEW 8.5 has fixed a lot of issues that occured between the Application Builder and LV Classes. If you were using LV 8.2, I would suggest changing to LV 8.5 or at least LV 8.2.1

2) Apart from setting "Do not disconnect type definitions or remove unreferenced members" in the Additional Exclusions page, I would suggest also checking the box against "Enable Debugging" on the Advanced Page.

The following forum post has discussed many of the problems that have come up when building an executable which uses LVOOP classes. Hope this helps.

0 Kudos
Message 2 of 2
(2,539 Views)