Hello, I wrote a LabVIEW program to communicate with a hardware sensor using vendor-provided LLB and a DLL files. The program runs fine on my workstation both from LabVIEW IDE and from a compiled executable. The problem starts when I copy the entire executable folder to a target host without a LabVIEW IDE (only with a runtime engine). The application opens with a broken Run arrow and a "missing external function" error message appears for every function call I made to the DLL (see attached).
I have tested my application on 5 completely different Windows 10 computers managed by different people. On three of them with various versions of LabVIEW IDE my executable opened with a whole Run arrow and no error message. Two other machines previously had no LabVIEW, so I installed a Runtime Engine 2017f2 32-bit with default settings to match the version of my IDE. Both gave an identical error message.
The DLL is always included in the application build. I have tried placing the DLL in every conceivable location on the target host: in the executable folder, in the /data folder, in the c:\Windows and system32 folders... I even created a full folder tree matching the location of the project on the developer workstation. Same error. When I intentionally hide the DLL, my executable prompts me to point to it upon being opened, and when I do, I get all the same error messages.
Vendor documentation only asks to put the two files in the same folder. From programmer's manual: " The driver was written in LabWindows/CVI, version 4.0.1 and is contained in a dynamic link library which can be linked with a variety of programming languages." There is no vendor-provided support.
One way I actually got rid of the error message was by editing every Call Library Function Node in every VI in the LLB to use relative path to DLL together with the Application Directory VI. However, I feel that there has got to be a better way to compile than by editing a vendor-provided library, especially since it works as-is on some computers. Can anyone suggest what it is?
Thank you for your time!
I'm trying to execute LPR.exe command to print some labels on a printer. However as its normal, problems occur. I could not find answer on any topic conneced with "sytem exec". I already tried all described methods (I think so). That's why I'm asking very kindly for any help.
When trying to execute or call the LPR.exe from System exec VI, I'm receiving error:
"'C:\Windows\System32\lpr.exe' is not recognized as an internal or external command, operable program or batch file."
Generally I would like to call function: "lpr -S 192.168.1.5 -P lp C:\test\do_druku.txt" which works from command window without any problem.
I wonder if someone ran into this and has a good suggestion about. I have a DSC project, in which it looks just right to organize hierarchically my shared variables. Like, e.g.
Now this is easy to do programmatically, see the attached project. The problem arises when building an application. It would look as if the plain way to do it, would be to create a build specification which includes the additional libraries, and select their deployment in the "Shared Variable Deployment" tab. However, this doesn't seem to work for nested libraries as in my example. The only possibility seems to add in "Always included" each of the contained libraries. But by doing like this the hierarchy is flattened.
If I include like this,
then the variables within the container library are not deployed at runtime.
In my example project:
open the project in the IDE, run DeployAllSharedVariables.vi, then CheckDeployed, and see the result (all four variables found with their nested paths) build and run DeployFlatLibraries and see the result: four variables, but flattened paths build and run DeployHierarchicalLibraries: only the two variables in the unnested SimpleVariableLibrary are there. I've searched a bit, and only came up with this document, which (for >2009) says "just check the checkbox". Nor the help page says much either.
I wonder if I can do what I'd like only compiling separately the libraries, and loading them programmatically afterwards, both in the IDE and in the exe. Which probably is sane, but inconvenient for the first attempts.
So, according to this NI document
It should be possible to link a .chm file into your executable so that a user can choose Help > Help for This VI. Well, I followed the advice, and no dice. Here is my LV2017-64bit attempt. In the development environment, it works fine, but in the executable Help for This VI is grayed out. The .chm file is a poor excuse, and unrelated to this VI, but never mind that, it's not the problem here.
I use Labview 2015 32-bit on a 64-bit Win& pro computer. My application connects to Hardware using NI-VISA and NI-DAQmx only (Two RS232 communications via a VCOM port and one NI DIO card using DAQmx).
Until today, I was building an executable which I was copying through the network on another win7 pro machine in the lab next to the hardware. It was working fine with Labview Runtime 2015 installed on this machine along with NI-VISA and NI-DAQmx. I never used an installer, I installed those 3 components seperatly.
Yesterday I added some features to the application and the EXE won't start. I have an error msg saying "The VI is not executable. The full version of Labview is needed to fix errors". The machine in the lab can't run the EXE but the EXE won't even start on my development machine.
My previous EXE from last week still works fine. The code works fine with all new features if I run the main VI from the development environment. I've double check all of my licences status. If I open another project and compile the EXE, I am able to run this EXE (I use a complex app containing almost all the same software components) If I build an EXE with a different UI source file part of the same project, that EXE works fine. If I build the EXE from my previous version again, it works fine too. I tried removing all the new features I had added in the project and build the EXE again and I still get the error. I tried creating a new project file and import the same librairies to try building an EXE from a fresh project file and I still get the error. I tried installing Labview 2015 on another computer and try to build an exe from a fresh labview install on this computer and I get the same error. The development machine can't execute the compiled EXE) It has to be related to the code but, I can't roll-back and get functionality of the EXE again unless I totally replace all of my files from a backup made last month. The most recent posts I read from a similar error are from 2013 and later. And the problem described is always that the EXE does not work on the deployment machine but works fine on the development machine. I must be at version 25 of this application to which I add improvements on a regular basis since almost 1 year. I am really puzzled. Is there a way to analyse or get more info about the broken EXE error? All the new features I added are using components that were already present in the project and in the main VI. The new features are important, I'd really like to use this working code with the hardware as soon as possible but I don't really want to install labview on the development machine.
Any ideas? I don't know what to try next. What would be the best information to provide / look for for the next step?
Thanks to all in advance