NI Linux Real-Time Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

Channel Wires produce too long path length on RT Application Builder

Solved!
Go to solution

I recently changed a Channel Wire I was using from U32 array to a class datatype, using a class stored in a PPL.

Although I'm not sure what the original path was, the new path when attempted with same settings (new file layout, no specific renaming, dependencies (including channel wire libraries) stored "Same as Caller") is too long and fails during the compilation step:

 

C:\<User>\Documents\LabVIEW Data\2017(32-bit)\ExtraVILib\ChannelInstances\Lossy Stream-class'MResDatatype.lvlibp-Measurement Result Datatype'\LossyStreamData.lvclass

LabVIEW cannot complete the operation because the following destination path exceeds the character limit of the operating system:

C:\<User>\AppData\Local\Temp\tNIAB\home\lvuser\natinst\bin\startup.rtexe\<User>\Documents\LabVIEW Data\2017(32-bit)\ExtraVILib\ChannelInstances\Lossy Stream-class'MResDatatype.lvlibp-Measurement Result Datatype'\LossyStreamData.lvclass

To prevent this error, make the destination directory shorter. If building an application or shared library, place a checkmark in the Use LabVIEW 8.x file layout checkbox on the Advanced page of the Properties dialog box.

 

Setting the 8.x file layout gives:

The build was unsuccessful.

Details: 

Click the link below to visit the Application Builder support page. Use the following information as a reference:

Error 6 occurred at Copy in AB_CDF_Delegate.lvclass:Copy Files.vi->AB_CDF_Delegate.lvclass:Build.vi->AB_RTEXE.lvclass:Build.vi->AB_Engine_Build.vi->AB_Build_Invoke.vi->AB_Build_Invoke.vi.ProxyCaller

Possible reason(s):

LabVIEW: Generic file I/O error.
=========================
LabVIEW: Generic file I/O error.

C:\Program Files (x86)\National Instruments\RT Images\User Components\cRIO-9045-RT\RT CompactRIO Target\RT Main Application\1.0.0.71\home\lvuser\natinst\bin\Lossy Stream-class'MResDatatype.lvlibp-Measurement Result Datatype'.lvlib_LossyStreamData\Initialize.vi

 

I'm not sure but I think this might be about having multiple types of Channels, and therefore multiple Initialize (also 2 other VIs) being flattened.

 

Moving the lvlib file from dependencies into the project allows me to use the "Rename this file in the build" option to shorten the library name. Making it "MRLS.lvlib" produces the same result as the initial case (i.e. no change when making the name of the library shorter - the problem still occurs with "C:\<User>\AppData\Local\Temp\...\Lossy Stream-class'MResDatatype.lvlibp-Measurement Result Datatype'\LossyStreamData.lvclass"

 

Using 8.x in this arrangement also doesn't help.

It's possible to also get warnings with file conflicts (Reset.vi, etc), which can be avoided by using the "Preserve disk hierarchy" option, but that really extends the path lengths on RT and I expect would cause problems there.

 

How can I shorten the name of the temporary directory used to create these channels for the RT exe (without changing the data type to a built-in)? Or should I just put this down as another frustration with channels and use Queues/RT-FIFOs?

 


GCentral
0 Kudos
Message 1 of 2
(2,052 Views)
Solution
Accepted by topic author cbutcher

Going into the Private directory of the library under Source File Settings and renaming the class from LossyStreamData.lvclass to LSD.lvclass was sufficient in this case, but I suspect the problem is generally possible.

 

Is there a better way?


GCentral
0 Kudos
Message 2 of 2
(2,049 Views)