LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with Application Builder (DLL)

In an attempt to develop a C equivalent to my VI, i tried to use the DLL builder of Application Builder.

It worked with simple VIs (like the Farenheit to Celsius example here : http://zone.ni.com/devzone%5Cconceptd.nsf/webmain/5DF85B448EB081D8862568FF006A0B20).

But, with my VI, the building crashes after a while, and always at the same stage of building.

Please find my VI attached.

Regards,

Kevin.


0 Kudos
Message 1 of 11
(3,373 Views)
This is a known issue regarding the Application Builder in LabVIEW and NI-DAQmx Base. When building an executable or a dll from a program that uses DAQmx Base, you need to deselect the checkbox "Disconnect type definitions and remove unused polymorphic VI instances" under the Application Settings tab. This will prevent the Application Builder from hanging.
 
See the following link for more information regarding DAQmx Base and the Application Builder:
Jarrod S.
National Instruments
0 Kudos
Message 2 of 11
(3,343 Views)
Thank you, but, I really need a DLL and NOT an executable.

The Applications settings tab is inactive xhen building a DLL....

What else can I do ? Downgrade to DAQmx Base 1.4 ?

0 Kudos
Message 3 of 11
(3,333 Views)
However, even when building an application, application builder returns Error 1003 on DAQmxBase Stop Task vi.

The reason is : Not an executable vi

0 Kudos
Message 4 of 11
(3,322 Views)

I managed to build your VI into a DLL successfully using NI-DAQmx Base 1.4 and LabVIEW 7.1, so downgrading is one option if all else fails. Another possibility if you are using a USB-6008/9 with Windows is actually to install NI-DAQmx version 7.5 for Windows 2000/NT/XP, which was just released yesterday. The new version includes support for some of the USB daq devices previously supported only under DAQmx Base.

See the Readme.html file from the following download page to determine if this driver is adequate for your application and device. The conversion for your existing application would be easy to undertake, and would involve replacing the DAQmx Base VI's with the corresponding DAQmx VI's.

http://digital.ni.com/softlib.nsf/websearch/CF7ECCEA4C4CC7DE86257038004D88AE?opendocument&node=13206...

Jarrod S.
National Instruments
0 Kudos
Message 5 of 11
(3,304 Views)
Ok, thank you,

As I am working under GNU/Linux, I will try downgrading.

Guess I'm in for a brand new day of fight with DAQmx under linux 🙂

0 Kudos
Message 6 of 11
(3,296 Views)
Well, downgrading to DAQmx1.4 was not a so good idea I guess...

Actually, my device is not detected, and the dll building still returns error 1003 ?

Have you managed to build it under windows or linux or something else ?

If you used windows, is it possible to use a windows built dll with C under GNU/Linux ?

Thanks for your help.

Kevin.

0 Kudos
Message 7 of 11
(3,291 Views)
Well, with DAQmx Base 1.5, dll building stalled in the middle, but with 1.4, it finishes and just returns :

Error 1003 occurred at /home/******/LabVIEW Data/app/internal.llb/DAQmxBase Start Task 92xx.vi

Possible reason(s):

LabVIEW:  The VI is not executable.
0 Kudos
Message 8 of 11
(3,287 Views)
Hello Zukero,

I was also successfully able to build your application into a DLL using v1.4 of the DAQmx Base driver on a Windows machine.  Unfortunately, a DLL built on a Windows machine cannot be used on a Linux platform.  Have you tried building a DLL with one of the DAQmx Base examples that installs with the driver?  Are you changing any of the default build settings after choosing to build a DLL?


Eric
DE For Life!
0 Kudos
Message 9 of 11
(3,259 Views)
I managed to build some parts of my VI, that is, the big while loop in the middle of it.

For each and every DAQ vi, I have this problem with Start and Stop task VIs.

Moreover, I thought that creating a library only for this while loop and using the C API to call Create, Start, Stop, Clear Task vis was a good idea, but i surprisingly found out that the TaskHandle type used in the C API to represent the task channels is completely different to the LVRefNum type created by a control and an indicator created at the begginig and ending of the task channel of my big while loop.

That is, I wanted to be able to use only a part of my vi as a library, and pass the task in and task out channels as arguments to the library's function.

I created another thread about this concern, but if you have any answers, I'll be happy to get any piece of relevant information ! 🙂

Best regards,

Kevin.

0 Kudos
Message 10 of 11
(3,241 Views)