Can labview create 'reentrant' dll?

Can LabVIEW create re-entrant dlls; by which I mean a dll that maintains state information between calls? If so, how do you implement it?
Thanks
Solved!
Go to Solution.

Maintaining state information can be done by means of an uninitialised shift register.  This works in a LabVIEW DLL, too. 
Make sure that the DLL doesn't get unloaded between function calls else it will loose it's memory.

Similar Messages

  • Can I create a dll from labview with more that one function name

    I know that when I create a dll from C and then call it in labview using the call library function node I can see the different functions on the configuration screen. Is there a way to create a dll in labview to have more than one function name? No matter how many functions happen in my VI it seems to build into a dll under the same function name requiring inputs for every function, can this be avoided somehow?
    Thanks,
    Dave

    Each function corresponds to a separate VI. When creating the dll, on the Source Files tab of the app builder, click the Add Exported VI for each VI that you want. SubVIs of a main are not automatically exported and will not be available as separate function calls.

  • Can LabVIEW call a DLL built with VS(2005) C++ with /CLR and Without an Entry Point

    My project requires me to convert a C++ program to a DLL and having it called by LabVIEW. Due to the complexity of this C++ program (converted from fortran using f2c -C++ option), it cannot be compiled without using /clr option.  I did build the application standalone (/clr), and it functioned fine.  When I build it into DLL using VS2005, I was forced to use No Entry point option and without using DllMain in the C++ code. Eventually the DLL was built without error.  But after I call it from LabVIEW, I was not getting calculated results as expected.  I added a testing function to the C++ code of the DLL and just try to modify a parameter, it will not, but only return the input numbers.  I was passing data by pointer and not by value, so I expect this parameter output be modified.  I suspect that the DLL didnt get executed at all as it has no entry point specified.
    Am I on the right track to approach this task, or I am heading to totally wrong direction here?   I believe due to the fact that my C++ was from f2c and use vsf2c.lib and so on, the code is managed code, so that a regular DLL cannot be built from it with an entry point. How can LabVIEW call such a DLL? Am I right on that?  I really need your advice here for a right approach to this problem and possible implementation "watch outs"...Thanks!
    Bryan

    Hi...Finally I was able to compile my code with an entry point defined and without using /clr.  I can also call this DLL from LV and got back a variable from a little test function added to the DLL.  But the function that was used for my main application in the DLL crashed LV and I got a pop up box from Microsoft Visual C++ Runtime Library: Runtime Error! "This application has requested the Runtime to terminate it in an unusual way, please contact the application's support team for more information".  In Visual Studio I also got the following message: (I eliminated most of the "No symbols loaded" messages that are not errors but just info.)  I would apprciate if someone can take to look with your more "experienced eyes", many thanks! Bryan.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\xpsp2res.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\Shared\nicont.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\Shared\NICONTDT.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\nitaglv.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\lkbrow.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\lkrealt.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\lvdaq.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\lvdesktop.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\lvfp.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\mfc71.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\MFC71ENU.DLL', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\vi.lib\FieldPoint\SubVIs\FPLVMgr.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\lvfprt.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\LvProjectProxy.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\LvRealTimeCoreProvider.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\MVEProvider.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\QtCore4.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\QtXml4.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\QtGui4.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\mxLvProvider.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\nimxlcpp.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\nimxlc.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\Providers\variable.mxx', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\Framework\lvMax.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\MAX\UI Providers\FieldPoint71.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\MathScriptParser.dll', Binary was not built with debug information.
    'LabVIEW.exe': Loaded 'Z:\bli\development\projects\galfitDLL\Debug\galfitDLL.dll', Symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700\msvcr80.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\Program Files\National Instruments\LabVIEW 8.5\resource\mesa.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\mscms.dll', No symbols loaded.
    'LabVIEW.exe': Loaded 'C:\WINDOWS\system32\icm32.dll', No symbols loaded.
    The thread 'Win32 Thread' (0xf94) has exited with code 0 (0x0).
    The thread 'Win32 Thread' (0x90c) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xfd0) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0x284) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xdac) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xa98) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0x528) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0x614) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xa5c) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xebc) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0x5cc) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0x700) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xcf0) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xc7c) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0x4c8) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0xa4) has exited with code 3 (0x3).
    The thread 'Win32 Thread' (0x52c) has exited with code 3 (0x3).
    The program '[804] LabVIEW.exe: Native' has exited with code 3 (0x3).

  • Can I use a dll created in Visual Basic 2010?

    I am reading up on the new extention system for air 3.0.
    I have successfully (I think) managed to integrate the Air 3.0 prerelease into Flash CS5.5 (I don't use flex or flash builder)
    So now I am trying to read up and learn how to use extentions.
    Now, I don't know C/C++. My experience with it has been very limited over the years. But I know visual basic pretty well as I have been using that since VB4. (back in the programming stone age, heh)
    Right now, I have Visual Studio 2010 and Flash CS5.5.
    I am developing for the iPhone and iPad and up until now I have created a working iOS application that works pretty well.
    Can I create a dll in visual basic (A class library) and then use the extention system to load that into my application to run on the iOS mobile device?

    I thought I'd seen this question asked somewhere before, but I can't find the thread. In theory there should be no problem. However, you'll need to have both the LabVIEW 5.1 and LabVIEW 8.6 run-time engines installed, and I don't know if there are any operating systems on which both of those versions are supported. If the run-time engine is properly installed, then calling a LabVIEW-built DLL is just like calling any other DLL. There might be some special optimization if the calling application and DLL both use the same version of the run-time engine.

  • How to create a dll in Java?

    I have written some code in Java to perform a certain function.
    How can I create a dll for this code? Would I be able to call this dll from any platform?

    Let me rephrase the question. I would like to create a dll for code that is written in Java.
    Can you please tell me the procedure to do that?
    I want to be able to call this dll from .Net framework or any other application. I found examples online to do the opposite using JNI.

  • Can I call a regular LabVIEW VI from my C# application without first creating a DLL in the application builder?

    I am writing a C# application and have LabVIEW 8.2 and the Application Builder. I want the application to call different standard VIs included in LabVIEW. One way to solve this is to create a blank VI, insert the desired standard VI, have the Application Builder create a DLL and then let the application call the DLL. Something tells me there must be a shortcut to this, is there? Aren't all standard LabVIEW VIs really DLLs underneath the surface? Can I somehow call those DLLs directly?

    arnold_w wrote:
    Aren't all standard LabVIEW VIs really DLLs underneath the surface?
    NO, LabVIEW is a programming language and contains a lot of primitives. Some VIs are wrappers for DLL's but even calling these from C(#) might be a problem.
    You can exploit the LabVIEW ActiveX interface to perform all the actions you want.
    Ton
    Free Code Capture Tool! Version 2.1.3 with comments, web-upload, back-save and snippets!
    Nederlandse LabVIEW user groep www.lvug.nl
    My LabVIEW Ideas
    LabVIEW, programming like it should be!

  • How to create a dll from vi in Labview 7.0 ?

    Hello,
    I want to create a dll from a vi in Labview 7.0.
    I've found the url: http://zone.ni.com/devzone/conceptd.nsf/webmain/003A3E6A5E9CCCEC8625691F0072B2C5
    explaining how to create DLLs from LabVIEW in Labview 6.0i but this method is not available in my Labview 7.0.
    How is it possible to create a dll from a vi or from vi's (stored in llb-files) ?
    With thanks,
             best regards,
                  Geert

    You can only create DLLs and Standalone Applications if you have LabVIEW professional or higher.
    If you only have LabVIEW Base of Full, you need to purchase the Application builder seperately. 
    (Check under "Deployment tools" in the LabVIEW comparison matrix. What level do you have?)
    Message Edited by altenbach on 10-18-2005 08:45 AM
    LabVIEW Champion . Do more with less code and in less time .

  • Create a DLL with asynchrono​us calls in LabVIEW for use in another environmen​t.

    Hello All,
    I need to create a DLL in LabVIEW that is going to be used from inside a Delphi environment.
    The thing that confuses me is that I don't know how to create asynchronous functions.
    Let me further explain.
    I want to have an "Init" function.
    This function starts a continuous dataacquisition process. The dataacquisition process continuously samples data at a rate of 1Msamples/sec. (in blocks of 4096 samples each time)
    I want to have an "Abort" function.
    This function stops the continuous dataacquisition process.
    The third function I need is a "MeasureAndAnalyse" function.
    If this function is called, the following block of 4096 samples is processed (FFT, ...) to retrieve the valid data.
    The fourth function can be used to check if the MeasurementAndAnalyse function is ready and return the actual result if this function is ready.
    What I don't know is how I can do all of this asynchronously.
    In my opinion the LabVIEW vi's I make are all synchronous.
    How to do this asynchronously???
    Does anybody know of an example of a similar thing?
    Thanks in advance for all the help!
    Dennis.

    Ok, after somem ore searching I found an example called "Building Asynchronous DLLs in LabVIEW".
    I will give that a try.

  • How do I call a LabVIEW created DLL from within Microsoft Excel (VBA)?

    Hi,
    I'm trying to get Microsoft Excel 2003 to call a function stored in a dll that I created using LabVIEW 7.1.  The function is very simple and is called "binary_file_to_ascii".  Basically it just reads a LabVIEW created binary spreadsheet file and outputs the columns as float arrays.
    The function arguments are as follows:
    INPUT : String that contains the path to the binary spreadsheet file
    OUTPUT : Number of rows in the spreadsheet
    OUTPUT : Number of columns in the spreadsheet
    OUTPUT : Float array containing the elements in column 1
    OUTPUT : Float array containing the elements in column 2..
    OUTPUT : Float array containing the elements in column 11
    However, for some reason there is something wrong with my VBA code and/or the way I created the DLL in LabVIEW because Excel crashes when it loads my DLL.
    What do I need to change in my VBA code or my LabVIEW DLL build settings to fix this?
    I've attached to this post a ZIP file that contains all my code and a sample binary file.
    Your help with this will be much appreciated.  Thanks!
    Richard
    P.S.  Here is the VBA code I'm using:
    Private Declare Function binary_file_to_ascii Lib "C:\temp\binary_file_to_ascii\binary_to_ascii.dll" _
    (ByVal binaryFile As String, ByVal nrows As Long, ByVal ncols As Long, ByVal column1 As Variant, _
    ByVal column2 As Variant, ByVal column3 As Variant, _
    ByVal column4 As Variant, ByVal column5 As Variant, _
    ByVal column6 As Variant, ByVal column7 As Variant, _
    ByVal column8 As Variant, ByVal column9 As Variant, _
    ByVal column10 As Variant, ByVal column11 As Variant)
    Private Sub load_binary_spectra()
      Dim nrows, ncols As Long
      Dim col1(), col2(), col3(), col4(), col5(), col6(), _
          col7(), col8(), col9(), col10(), col11() As Variant
      Dim lRetVal As Long
      Dim spectra_path As String
        spectra_path = "C:\temp\binary_file_to_ascii\sample_binary_file\sample_binary_file.dat"
        lRetVal = binary_file_to_ascii(spectra_path, nrows, ncols, _
                  col1(), col2(), col3(), col4(), col5(), col6(), _
                  col7(), col8(), col9(), col10(), col11())
        MsgBox (spectra_path)
    End Sub
    Message Edited by Richard Ballantyne on 07-25-2007 02:39 PM
    Message Edited by Richard Ballantyne on 07-25-2007 02:39 PM
    Attachments:
    binary_file_to_ascii.zip ‏192 KB

    Hi,
    I don't know anything about Visual Basic, but here's my guess.
    When you load the DLL with this line of code
    Private Declare Function binary_file_to_ascii Lib "C:\temp\binary_file_to_ascii\binary_to_ascii.dll" _
    (ByVal binaryFile As String, ByVal nrows As Long, ByVal ncols As Long, ByVal column1 As Variant, _
    You are defining how the parameters are sent. It seems that all are sent by value (ByVal), but in the DLL header, some of the function's
    parameters are defined as pointers(see the function prototype below, look for asterisk(*))
    void __stdcall binary_file_to_ascii(PStr binaryFile,
                                                    long *numberOfRows,
                                                    long *numberOfColumns,
                                                    float column1[],
                                                    float column2[],
                                                    float column3[],
                                                    float column4[],
                                                    float column5[],
                                                    float column6[],
                                                    float column7[],
                                                    float column8[],
                                                    float column9[],
                                                    float column10[],
                                                    float column11[]);
    Can you define in VBA that you want to use pointer instead? Maybe by using ByRef (as by reference).
    Hope this helps.

  • Creating a DLL in LabVIEW containing a function using pointer to pointer

    Hi!
    I´m facing the problem to create a DLL from LabVIEW containing the following C-function:
    functionF(structS** arrayA) ,
    where:
    structS is a struct of various data-types (e.g. int)
    arrayA is an C-array of structS
    How can this be done? Any ideas?
    Thank you in advance for your support

    This cannot be done in LabVIEW. LV doesn't have the data type "Pointer" as C has.
    The only workaround I can think of is to use an array of strings in LV and in the interface define the parameter as "by reference". In LV you have to typecast the wire with the string to a cluster withthe layout of structS.
    As far as I know an array of strings is represented as an array of pointer to strings. This is because strings are variable in length and therefore LV uses this method storing the pointers to the strings in the array and not the elements as usual.
    You have to read the document about memory and data types of LabVIEW. In elder versions this was in the LabVIEW Bookshelf but I haven't found it in short in the newer version.
    Waldemar
    Using 7.1.1, 8.5.1, 8.6.1, 2009 on XP and RT
    Don't forget to give Kudos to good answers and/or questions

  • Creating a DLL in Labview 8.6 and calling it from Visual Basic 6.0

    Dear friends,
    I need to create a DLL in Labview 8.6 and call it from Visual Basic 6.0. The system works as follows:
    I made an application using Labview 8.6 + Vision Assistant 8.6 where I can obtain the x,y coordinates of a template in an certain image being captured by an USB camera. The template coordinates change every time it moves and Visual Basic 6.0 must read these x,y values in real time. I found some information in the link http://zone.ni.com/devzone/cda/tut/p/id/3925, but it works for version 6.x of Labview and 8.6 version is different. Am I in the right path? If you have an updated tutorial like the one in the link above but for Labview 8.6 It would be very nice. Please help me.
    Kind regards.
    João Júnior

    Hello Osvaldo,
    I analysed the updated tutorial you sent me, but the thing is that it doen't show how to create the DLL in LV 8.6 but only show how to accessing the DLL from VB6. My problem is really HOW TO CREATE THE DLL IN LV8.6. In the link http://zone.ni.com/devzone/cda/tut/p/id/3063 there is detailed information about how to do this in LV6.x, the problem is that I don't find the path Tools»Build Application or Shared Library (DLL) in LV8.6, I think the procedure in LV8.6 is a little bit different. Don´t you have an updated tutorial on how to build a dll in LV8.6?How could you help me?
    Kind regards.
    João Júnior

  • Creating a DLL in labview that interacts with a DLL in C++

    I’m creating a DLL in LabView that will interact with a DLL created in C++. I don’t have control in the C++ DLL.
    Both DLLs would pass a big amount of data as strings between them, for that it is necessary to allocate memory to store information in one dll and read it in the other and viceversa. The first time I will call the other DLL,  with this function :
    long in texts ( unsigned char *name, void *id)
    I would pass them a pointer pointer to an ASCII string  (name) and a pointer to an unspecific data structure (id). The id would then be passed to me by his DLL whenever they use one of the functions implemented on my dll.
    What I don’t know is what to pass as a void*id? What are they expecting? A number? A cluster?
    The other thing I don’t know is how to allocate memory in labview and write there information, such as a string, and then tell the other DLL to look for the information at that DLL, and viceversa. I hope I made my self clear, hope somebody can help me, and please indicate me if you need more information

    Hello Osvaldo,
    I analysed the updated tutorial you sent me, but the thing is that it doen't show how to create the DLL in LV 8.6 but only show how to accessing the DLL from VB6. My problem is really HOW TO CREATE THE DLL IN LV8.6. In the link http://zone.ni.com/devzone/cda/tut/p/id/3063 there is detailed information about how to do this in LV6.x, the problem is that I don't find the path Tools»Build Application or Shared Library (DLL) in LV8.6, I think the procedure in LV8.6 is a little bit different. Don´t you have an updated tutorial on how to build a dll in LV8.6?How could you help me?
    Kind regards.
    João Júnior

  • How to create a DLL for LabVIEW in MatLab

    I want to use MatLab-Code from an M-file in LabView without MatLab. So i decide to use external code in a DLL. Can anybody give me some hints - how to do? (How to create, how to use?)
    Used System Windows 98, LabVIEW 6.1, MatLab 6.1 R12.1
    Thanks

    Hi,
    I use Matlab-Code in Labview and it's don't need create a dll. The LV was a tool, matlab script, you can write your code Matlab here. see the examples of LV.I think the lV 6.1 have.
    Dll it's very complicated

  • Can labview globals or controls be modified directly from a dll

    Is it possible to obtain a pointer or handle to LabVIEW global variables - specifically clusters of scalars, not including strings or arrays, which presumably would occupy a fixed memory area.
    If this is not possible, can the value of data held in LabVIEW controls be modified from a dll by passing control references to the dll and if so how can this be done?
    Using LabVIEW 6i, Windows NT SP6, MS-VisualC++ 6.0

    I created a dll with LabVIEW 6.0 which had as its only input parameter a control refnum for a string control. I used this refnum to modify the value of the string control. I built the dll and then from a new VI called the dll using a call library function, passed it a refnum to a string control in the calling VI and ran it. The value of the string control in the main VI was change by the dll by only passing it a refnum.
    To do this you must have LabVIEW 6.0 Pro or App builder. (I did all this with LabVIEW 6.0.2 update installed)
    Attachments:
    caller.vi ‏8 KB
    chngstring.dll ‏17 KB

  • I can not create an Installer, After install the Vision Builder Demo and then uninstall it. I can not create a Labview installer anymore, it asks me for a Vision Builder Installer, even if My Labview program does not have nothing to do with it...

    I can not create an Installer on LabView, After install the Vision Builder Demo and then uninstall it. I can not create a Labview installer anymore, it asks me for a Vision Builder Installer, even if My Labview program does not have nothing to do with it...
    Solved!
    Go to Solution.

     Hi Shada this can happen if you are including additional installers to your installer for example DAQmx. When you are doing this the installer has to include other files like MAX (Measuremente and Automation Explorer). Probably when you installed Vision Builder it updated MAX, so when your installer is trying to Include MAX, its asking for the source where it was installed in your computer in this case Vision Builder.
     Here you can cache the information so its not asked again, or you can download a newer version fo DAQmx, so it will update MAX and change de dependecy.
     You can find more details about this issue in this KB:
    KnowledgeBase 3S88PJMY: Why Do I Get A "Missing Distribution" Error When Trying to Build an Installe...
    And for keeping a copy here is more info:
     How Do I Stop the Missing Distribution Notification Each Time I Build An Installer?
    Best Regards
    Benjamin C
    Senior Systems Engineer // CLA // CLED // CTD

Maybe you are looking for