LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Application builder

Solved!
Go to solution

Hello everybody,

Maybe someone will help me. I was using LabView 2012 Full Development System. And my two applications use same subvis. When I compile it, - work only last one. And first displayed "error of type 2002200". Earlier I just switch order of compiling the VIs, and they did work. But now that trick didn't help.

0 Kudos
Message 1 of 11
(5,368 Views)

Your question has nothing to do with the old thread you posted into.

 

I've moved it to a new thread of its own and updated the title of the messages from here on out.

 

You should also add more information about your situation.  What does the app do?  What are the differences between the two applications.

0 Kudos
Message 2 of 11
(5,372 Views)

Are there any conflicts in dependencies?

Error 2002200 (and -2002200) is undefined, so it is not LabVIEW error, but something custom. At least in LV 2011.

Error -200220 is invalid device identifier. Something  fails to connect to something on some reason. 

If you are in development system, trace error back to its reason.

What do you mean "compile VI"? I believe VIs are compiled on the fly, when you edit them. Do you mean Run VI? Build exe?

0 Kudos
Message 3 of 11
(5,345 Views)

Do you mean Run VI? Build exe?

Yes. I mean Build application. Make an .exe file.

Two VIs:

one collects data, save database and calculate values

and two read the database, calculate values and export to other formats.

 

That VIs use same subVIs in one folder and works properly. But when I build .exe applications each of its place in "dependenses" folder all subVIs what its need, and owerwrite files with same names. After build is compleate - works only last application, but subVIs with same names is same subVIs used by two applications one after other. And I don't understand what the problem is?

Безымянный.GIF

0 Kudos
Message 4 of 11
(5,332 Views)

The picture helps to show what is going on, but leads me to some questions.

 

Are you using 1 project file or 2?

 

If they are using the same subVI's, why would one overwrite the other?

 

The "dependencies" folder.  Is this the virtual folder that show up in project explorer?  A directory in your working project directory?  Or a directory within the directory where you builds go to?

 

If an two applications use the same subVI, then there is no reason by building one executable should cause it to overwrite the subVI in the project directories.

 

You either have some cross-linking problem going on here, or some with files recompiling because some build parameters are different.

 

Perhaps if you attach your LVPROJ file or files we can open them and see how you have the builds structured.

 

0 Kudos
Message 5 of 11
(5,322 Views)

Are you using 1 project file or 2?   I use 1 project.

If they are using the same subVI's, why would one overwrite the other?   Because in project i have 2 "builds". When first compiling it put into "dependencies" folder all subVIs, and for second compiling it does the same.

The "dependencies" folder.  Is this the virtual folder that show up in project explorer?  A directory in your working project directory?  Or a directory within the directory where you builds go to? Directory in widows with builds.

executable should cause it to overwrite the subVI in the project directories.   When the VI executes it use the subVIs like a function, and don't change they. If I understood right.

If you attach your LVPROJ file or files we can open them and see how you have the builds structured.   .lvproj in Attachments

0 Kudos
Message 6 of 11
(5,296 Views)
Solution
Accepted by topic author 0Forest0

I found out the problem, but didn't resolve it. Labview buider generate a file NI_LVConfig.lvlib. And it different for each application. In section <Item Name="Read" Type="Folder"> it not include item <Item Name="Read Key (I32).vi" Type="VI" URL="../Read Key (I32).vi"/></Item> I think its a read .ini file VI. My VIs reads different keys from same .ini file. Is this cause the problem?

 

Spoiler
<?xml version='1.0' encoding='UTF-8'?>
<Library LVVersion="12008004">
	<Property Name="" Type="Bool">true</Property>
	<Property Name="NI.Lib.FriendGUID" Type="Str">0befa190-b666-49f7-8b1d-6d51fb8b905e</Property>
	<Property Name="NI.Lib.HelpPath" Type="Str"></Property>
	<Property Name="NI.Lib.Icon" Type="Bin">%A#!"!!!!!)!"1!&amp;!!!-!%!!!@````]!!!!"!!%!!!*`!!!*Q(C=T:1RDBJ"%%5`VA;7)X-$CSN5ZJAL=!",KX+]%3HB""NYU3;6/L)*.E&gt;=I;\!&amp;&lt;D#\*OG"W:FT#2LCW[K:`D68@7GON63;2_F/\6D&lt;8OVX;3`X&lt;&lt;8`%/J_%^$WQ`^_V'N%?MQ@/X^WR(`V@8&lt;NZH[X^FV]=-([[^5ZL`6``Q=60_C@`M8@XN;04BVQ`7H)L;$=/`I0R.=S$`W`4@L(WH=![P23@_Y32.V&amp;R'77'#/G4J8G_C*HOC*HOC*(OC"(OC"(OC"\OC/\OC/\OC/&lt;OC'&lt;OC'&lt;OC'8DK[U)5O&gt;+K3*%]3*5'4!-FE5*1-#5`#E`!E00R6QJ0Q*$Q*4],$&amp;#5]#5`#E`!E0#R4QJ0Q*$Q*4]*$K%+3J;0$E`!18A&amp;0Q"0Q"$Q"$SE6]!1!1&lt;)A="!%$!8/Y#8A#8A#(FY6]!1]!5`!%`$A6M!4]!1]!5`!QZ*3F3AU85?(BT"S?"Q?B]@B=8A),9@(Y8&amp;Y("[(BX2S?"Q?"]**[!1(1=YC:Y,TR_&amp;R?(D)Y8&amp;Y("[(R_("68&lt;)3W5[GK[DQW0Q'$Q'D]&amp;D]""#"I`"9`!90!90978Q'$Q'D]&amp;D]*"+"I`"9`!9)%:3UMM):CQU*BG#Q=/PH"9LOR3&amp;R%K8[O&amp;60:3KBUXV%+E?$N6.6^V-V5V3,&lt;ZK567,J6I%V9^4B6;&amp;55WCOLC&lt;K!0D(NNB'[T"FNA#GW-T&lt;.IN@??*B]."_`V?O^V/G]V'4&gt;.IO6RKM6BI0J^L.JNJ/JWK&lt;V`IRT&lt;J\[56\X`;*_TTZ0(\VY@V]`LJ"^9^(_`8$`C@M'^PZK^_9=VE^@.FMHL_@&lt;&lt;GZ5,MIRXPJ6OY'`6"R_?J2K^^X;`"!!!!!!</Property>
	<Property Name="NI.Lib.OldestLVVersion" Type="Str">9002001</Property>
	<Property Name="NI.Lib.SourceVersion" Type="Int">302022660</Property>
	<Property Name="NI.Lib.Version" Type="Str">1.0.0.0</Property>
	<Property Name="NI.LV.All.SourceOnly" Type="Bool">false</Property>
	<Item Name="ctrl" Type="Folder">
		<Item Name="Config Data RefNum.ctl" Type="VI" URL="../Config Data RefNum.ctl"/>
	</Item>
	<Item Name="Open/Close" Type="Folder">
		<Item Name="Close Config Data.vi" Type="VI" URL="../Close Config Data.vi"/>
		<Item Name="Open Config Data.vi" Type="VI" URL="../Open Config Data.vi"/>
	</Item>
	<Item Name="Private VIs" Type="Folder">
		<Property Name="NI.LibItem.Scope" Type="Int">2</Property>
		<Item Name="Add Key.vi" Type="VI" URL="../Add Key.vi"/>
		<Item Name="Add Quotes.vi" Type="VI" URL="../Add Quotes.vi"/>
		<Item Name="Config Data.ctl" Type="VI" URL="../Config Data.ctl"/>
		<Item Name="Config Queue.ctl" Type="VI" URL="../Config Queue.ctl"/>
		<Item Name="Config to String.vi" Type="VI" URL="../Config to String.vi"/>
		<Item Name="Escape String.vi" Type="VI" URL="../Escape String.vi"/>
		<Item Name="Get File Path.vi" Type="VI" URL="../Get File Path.vi"/>
		<Item Name="Get Key.vi" Type="VI" URL="../Get Key.vi"/>
		<Item Name="Get Section.vi" Type="VI" URL="../Get Section.vi"/>
		<Item Name="Load.vi" Type="VI" URL="../Load.vi"/>
		<Item Name="New Config to Queue.vi" Type="VI" URL="../New Config to Queue.vi"/>
		<Item Name="Parse Config to Queue.vi" Type="VI" URL="../Parse Config to Queue.vi"/>
		<Item Name="Parse Key Value Pair.vi" Type="VI" URL="../Parse Key Value Pair.vi"/>
		<Item Name="Read Value Without Comment.vi" Type="VI" URL="../Read Value Without Comment.vi"/>
		<Item Name="Remove Quotes.vi" Type="VI" URL="../Remove Quotes.vi"/>
		<Item Name="Save Config File.vi" Type="VI" URL="../Save Config File.vi"/>
		<Item Name="Section.ctl" Type="VI" URL="../Section.ctl"/>
		<Item Name="String to Config.vi" Type="VI" URL="../String to Config.vi"/>
		<Item Name="Typecast Queue to Refnum.vi" Type="VI" URL="../Typecast Queue to Refnum.vi"/>
		<Item Name="Typecast Refnum to Queue.vi" Type="VI" URL="../Typecast Refnum to Queue.vi"/>
		<Item Name="Unescape String.vi" Type="VI" URL="../Unescape String.vi"/>
	</Item>
	<Item Name="Read" Type="Folder">
		<Item Name="Read Key (Boolean).vi" Type="VI" URL="../Read Key (Boolean).vi"/>
		<Item Name="Read Key (Double).vi" Type="VI" URL="../Read Key (Double).vi"/>
		<Item Name="Read Key (String).vi" Type="VI" URL="../Read Key (String).vi"/>
---------------------------->		<Item Name="Read Key (I32).vi" Type="VI" URL="../Read Key (I32).vi"/>
		<Item Name="Read Key (U32).vi" Type="VI" URL="../Read Key (U32).vi"/>
	</Item>
	<Item Name="Remove" Type="Folder"/>
	<Item Name="Write" Type="Folder">
		<Item Name="Write Key (Boolean).vi" Type="VI" URL="../Write Key (Boolean).vi"/>
		<Item Name="Write Key (Double).vi" Type="VI" URL="../Write Key (Double).vi"/>
		<Item Name="Write Key (String).vi" Type="VI" URL="../Write Key (String).vi"/>
		<Item Name="Write Key (U32).vi" Type="VI" URL="../Write Key (U32).vi"/>
	</Item>
</Library>
0 Kudos
Message 7 of 11
(5,249 Views)

You have 'remove unused members of project libraries' ticked in your build specification under 'additional exclusions'.

 

There is a function in the INI file library that is used by one application but is not used by the other so when you build the executable that doesn't call this function, it removes it from the library in the dependencies (to save disk space / reduce executable size).

 

Why do you have these items as external dependencies? I believe by default LabVIEW will put the dependencies inside the executable, and then you don't have to worry about things like this. You can also untick the remove members option in the build specification (which you would need to do, if for example you called a function from the library dynamically).


LabVIEW Champion, CLA, CLED, CTD
(blog)
0 Kudos
Message 8 of 11
(5,230 Views)

@Sam_Sharp wrote:I believe by default LabVIEW will put the dependencies inside the executable, and then you don't have to worry about things like this. 
I do that because i have two exe, and I don't want include same subVIs in two different .exe file. If I understand right.
I solve the problem. Make a read .ini file in subVI, and it is the same in two VIs/.exe-s. All is working. But reads all ini-keys at every run.
0 Kudos
Message 9 of 11
(5,210 Views)

You can do that, but you run the risk of the same problem happening again if you update one of the VIs/executables to use some functions of a library which are not used in another.

 

1) The safest option is to include VI dependencies inside the executable. I doubt the file size difference will be problematic (what's a few MB these days?!). It also means you can update one executable without having an impact on the dependencies of the other one (e.g. in the case of shared dependencies).

2) The safe option is to untick the 'remove unused members of project libraries' from the build specification so that VIs don't get removed from the library during the build process.


LabVIEW Champion, CLA, CLED, CTD
(blog)
0 Kudos
Message 10 of 11
(5,187 Views)