01-30-2019 01:05 AM
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?
Solved! Go to Solution.
01-30-2019 01:09 AM