Deploying labview dll for vb6

Hello,
I have created a labview DLL that uses the modulation toolkit. The idea is to use this dll in a VB6 project and this on a PC that doesn't have anything installed from Labview, only visual basic 6.
To test my DLL, i have created a VB6 test project on my development PC (with labview + modulation toolkit installed) which calls this DLL. On my development PC everything is working fine. The problem starts when I try to run this VB6 project on a PC without Labview. First, he asked for the labview runtime engine, so I installed this and restarted my VB6 project. But if I try to run my project VB6 automatically shuts down.
How can I create a VB6 project on a blank PC that uses my labview DLL?
Thanks

Well, as you've already found out, you have to have the LabVIEW Run Time Engine installed on this other PC. This is an absolute requirement.
Unfortunately, right now there's too many variables, so the only other answer I can give you is that you should try to narrow this problem down by creating a simplified LabVIEW DLL and try to call it in your VB6 on this other computer. To be honest, I'm not sure whether not having the deployment license for the Modulation Toolkit on this other machine would actually cause VB6 to crash. I did a search on this site and didn't find anything. Still, I would suggest trying it out with the Modulation Toolkit first,  Then work your way up until you find where it breaks.

Similar Messages

  • Call labview dlls in release mode

    Hi all,
    I built a LabVIEW dll for the bluetooth connection, at the beginning I called this dll in the VS C++ in the debug mode, it worked very well.
    but due to the application, all the code should run in release mode. Unfortunately error occured, " Runtime error, R6030 CRT not initialized".
    I googled, but i did not get something useful.
    I appreciate any comments and  information, and apologize for my poor english.
    ps.  I tried to use different runtime library, and finially I got only multi-thread DLL was suitable.

    the attachments are the VC code and the dll files, 
    I really appreciate any comments about thie problem.
    Attachments:
    bluetooth test.zip ‏869 KB
    lib.zip ‏340 KB

  • Interop.LabVIEW DLL

    Where can I get a copy of the Interop.LabVIEW DLL for use with C#, or do I have to write my own?
    Solved!
    Go to Solution.

    The project requires:
    1. My vi recieving a digital input and then triggering my wpf to start a webcam running.
    2. my vi then recieves a second digital input and that triggers my wpf to capture and save an image from the webcam to file or for that image to be sent directly to my vi.
    3. the captured image will be compared to a reference image and if the illumination of the object is not the same as that of the reference image my vi will adjust the illumination level of the object (this process will cotinue until the illumination level of the object anf reference image are equal).
    4. Once the captured image is equal to the reference image my vi will begin image processing to determine the orientation and feature recognition of the object by comparison to the reference image.
    5. if the orientation and/or features of the object are incorrect my vi will send a digital signal to have the object rejected (my vi will also sound an alarm buzzer and start an LED flashing).
    6. If the object passes inspection then the orientation and co ordinates of the specific features that need to be identified will be saved to file.
    7. With 6 completed or the object rejected my vi will send a signal to my wpf to stop the webcam. and wait for the input signal to start
    the whole process all over again.
    So i will be using the DLLs that are available via the references window in visual studio 2010. but i dont know what namespaces, classes and methods are available in those DLLs so i bont know how to use them. but i looked on the internet and i think the DLLs that are available via vs2010 are to allow communication between both my wpf and vi via .net objects and/or active x objects.
    Ive no idea how to use either and finding anything more than superficial documentation on using either of the above is proving difficult to find (could you point to anything useful on .net and/or active x).
    I think ive covered all you wanted to know but if you require more info please let me know, and thank you for trying to help me.
    Saving to file isnt a problem but the communication between my vi and c# based wpf is.

  • LabVIEW DLL 2D Array output deallocati​on

    Hey everyone,
    I am using a custom built DLL made with LabVIEW.  One of the functions outputs a 2D array of data by "handle".  I can catch the 2D array from the function just fine from within my C program, however I have a question about deallocating the memory allocated by the LabVIEW DLL for the 2D array.
    I call the DLL function repeatedly in a loop and as this occurs the RAM used on my machine continues to increase until it is full or I exit the program.  There are no other dynamically allocated peices of data within the C program that could be causing this.
    The question is, can I call free() on the 2D array handle safely?  Is this the correct way to deallocate the 2D arrays passed out of LabVIEW DLL functions?  One dimension of the 2D array is always the same size, but the other dimension varies per call.
    Here is an example (I have renamed function calls and library headers due to security reasons):
    #include "DLLHeader.h"
    int main(void)
        ResponseArrayHdl myArray = NULL;
        DLL_FUNC_InitializeLibrary();
        DLL_FUNC_ConfigurePortWithDefaults("COM3");
        DLL_FUNC_StartAutoSend(9999999);
        while(DLL_FUNC_IsTransmitting())
            DLL_FUNC_GetAllAvailableResponseMessagesByHndl(&my​Array);      // gets the 2D array
            // do something with array data here!
            free(myArray);   // is this the appropriate way to clean up the array?
            Delay(0.05);
        DLL_FUNC_GetAllAvailableResponseMessagesByHndl(&my​Array);      // gets the 2D array
        // do something with array data here!
        free(myArray);   // is this the appropriate way to clean up the array?
        DLL_FUNC_ShutdownLibrary();
        return 0;
    from DLLHeader.h:
    typedef struct {
        } ResponseMessage;      // created by the LabVIEW DLL build process
    typedef struct {
        long dimSize;
        ResponseMessage Responses[1];
        } ResponseArray;
    typedef ResponseArray **ResponseArrayHdl;   // created by the LabVIEW DLL build process
    I want to make sure this is an appropriate technique to deallocate that memory, and if not, what is the appropriate way?  I am using LabVIEW 7.1 if that matters.  The C program is just ANSI C and can be compiled with any ANSI C compliant compiler.
    Thanks!
    ~ Jeramy
    CLA, CCVID, Certified Instructor

    Tunde A wrote:
    A relevant function that will be applicable in this case (to free the memory) is the "AZDisposeHandle or DSDisposeHandle". For more information on this function and other memory management functions, checkout the " Using External Code in LabVIEW" reference manual, chapter 6 (Function Description), Memory Management Functions.
    Tunde
    One specific extra info. All variable sized LabVIEW data that can be accessed by the diagram or are passed as native DLL function parameters use always DS handles, except the paths which are stored as AZ handles (But for paths you should use the specific FDisposePath function instead).
    So in your case you would call DSDisposeHandle on the handle returned by the DLL. But if the array itself is of variable sized contents (strings, arrays, paths) you will have to first go through the entire array and dispose its internal handles before disposing the main array too.
    Rolf Kalbermatter
    Message Edited by rolfk on 01-10-2007 10:43 PM
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • How to call LabVIEW ActiveX dlls into VB6

    I'm jumping in on a project written primarily in VB6. I'd much rather wirte code in LabVIEW so what I am looking for is some example code for calling LabVIEW activeX dlls into VB6. Does anyone have example code? I need to see how the LabVIEW libraries and classes are called and used in VB6.

    Hi Drewdafis,
    Refer to this link for example code on calling a LabVIEW DLL from Visual Basic.
    Hope this helps!
    Best Regards,
    Jonathan N.
    National Instruments

  • Creating a LabVIEW Shared DLL for use with C# and Strings?

    Hi All,
    I am trying to create a prototype for a LabVIEW Shared DLL that all the VI does is take in a string and return an upper cased string. Needless to say the DLL builds fine but when I try calling the shared DLL from C# the .NET application recieves an exception about "Ansi char arrays can not be marshaled as byref or as an unmanaged-to-managed parameter". Does anyone have an example of how to pass a string to a VI and return a string or an example of a better way of accomplishing this.
    We are using labVIEW 7.1 on Windows 2000.
    I am in quite a bit of a hurry to prove that this type of a LabVIEW Shared DLL VI would work. The eventual system will be passing in a string of XML with a large amount of
    data and returning XML.
    Thanks in advance,
    Jim

    Hello jprucha,
    This occurs because LabVIEW DLLs are not considered managed code. As such, we need to define the C# function as unsafe to be able to call unmanaged DLLs.
    You can find more information about C# and managed code at Microsoft's developer website linked below.
    MSDN Home Page
    Good luck with the development,
    Matt F
    Keep up to date on the latest PXI news at twitter.com/pxi

  • Problem in creating DLL for a LabVIEW VI

    Hi
    I am facing problems in creating DLL for a LabVIEW VI. Previously i had no problems in creating DLL for the VI that transmits a message from serial port to NI - PXI 7831-R Reconfigurable I/O card (configured by FPGA MOdule). When i try the same VI with a customized port developed using IVI drivers i am not able to create the DLL. It gives me error as follows:
    Fatal Internal error: "datamgr.cpp", Line No: 1882
    Please somebody help me out to fix this error.
    Regards,
    Subramania Bharathi

    Hi,
    Thanks for your curiosity in replying my questions. I am really sorry for replying so late. Actually the problem was with the NI SWITCH 2503 functions. Actually i was multiplexing the channels of my customized serial port using NI Switch module. This switching is done before i start my communication. My VI follows a sequence as follows.
    1. Connect two channelss using Switch functions
    2. configuration of both FPGA and the customized port
    3. Transmit data from the port
    4. Receive it in FPGA.
    5. Reset the channels using Switch functions
    I never expected that the error was because of NI Switch. When i removed them from my VI i was able to create the DLL and able to create sequence successfully to run in the Testsand. And
    further i am using Switch Executive for swithcing the channels in TestStand.
    But now i am very curious why it posted me that error when i used my NI Switch function?? I tried to create DLL for a VI that switches two channels and i was successful. But the error occurs only when i combine i with my FPGA functions!! If you could trace out the reason, please let me know
    Once again thanks a lot for your support
    Regards,
    Subramania Bharathi

  • Call a dll for Labview: Function not found in library

    Hello,
    I am trying to call a very simple .dll form Labview. I compiled the .dll for x64 using Visual Studio 2010, because I am using Labview(64-bit). I did everything exactly the way I read it in several Tutorials. But the "Call Library Function Node" doesn't create a popup menu with the avalible functions like it is supposed to do. The Import Wizard doesn't find any functions neither. What is wrong with my .dll?
    I added a block marked 'extern "C" ' into my source file, but it still won't work.
    Thanks
    Matthias
    Solved!
    Go to Solution.
    Attachments:
    DynamicLibrary.zip ‏2452 KB

    You need to define an entry point to the DLL
    BOOL APIENTRY DllMain( HANDLE hModule,
                            DWORD  ul_reason_for_call,
                            LPVOID lpReserved )
        return TRUE;
    Also add extern "C" __declspec(dllexport) to your functions
    More details here: http://www.ni.com/white-paper/3056/en
    Beginner? Try LabVIEW Basics
    Sharing bits of code? Try Snippets or LAVA Code Capture Tool
    Have you tried Quick Drop?, Visit QD Community.

  • Creating Labview Host DLL for FPGA

    I have created a DLL for the FPGA host VI.
    The host VI neads a loop to keep the FPGA running in labview but a call to the DLL function will not return while the loop is running.
    If I change host VI to one shot I asume that the FPGA start and stop with each call.
    I could load FPGA vi into flash set to run but I think that it will stop after first call from DLL.
    Seem like a catch 22.
    Thanks

    I found that I could run without the loop OK by closing the FPGA reference but not stopping the FPGA card running.
    My problem now is, that the DLL does not seem to work.
    I included a control updating an indicater and exported just those peramiters in the DLL but I can not get it to work with Borland C++Bulder 5.
    Other DLL's that I create with Labview work OK.
    Is there a broblem creating DLL's from host vi?

  • Building Dll for labVIEW RT gives errors

    Hi All
    Does building dll for labVIEW RT using CVI require labview runtime engine to be installed?
    becuase i get some errors of unsatisfied referances to some library while building the dll with target selceted to "labVIEW real time only".
    Regards
    Arun

    Hello Arun,
    You don't need to have LabVIEW Run Time installed on your machine. Please check the link below to see the function that are supported by exporting the LabWindows/CVI LabVIEW RT Engine
    http://digital.ni.com/public.nsf/websearch/D3EFE7C6F073384886256FDD005FBCDA?OpenDocument
    Ame G.
    National Instruments

  • Configure string parameter for LabView dll

    Hi,
    I have created a simple LV 2010 vi (Starting vi) that reads the identification of an oscilloscope. I then take this vi and build it to a LabView dll. I test the dll by calling it from LabView (RunFrom dll). It essentially seems to work but len and ReadBuffer come back blank. It has to be in the way I am configuring the parameter setup for Readbuffer (Parameter Setup) in the dll configuration. I have tried several different configurations but nothing seems to work. Any help is appreciated!
    Jim Haas
    Solved!
    Go to Solution.
    Attachments:
    Starting vi.png ‏43 KB
    RunFrom dll.png ‏29 KB
    Parameter Setup.png ‏20 KB

    What's the len parameter for?  Normally you would set that as the length of the string, but it appears you haven't done that.  Also, you're passing len by value, not by reference, so the function expects it to be an input and you'll never get back a value other than whatever value you provide.
    Don't use a local variable of ReadBuffer for the "readbuffer" input.  You need to pass an initialized string long enough to hold the expected amount of data.  The easiest way to do this is to use Initialize Array to create an array of U8, then use byte array to string.  Set the "minimum size" parameter to "len" and pass in the length of the initialized string (this isn't required but is good practice).  If you need the resulting length output, add another indicator and parameter for that value.  There might be a way to do it with a single parameter by passing len by reference, you'd have to experiment (it's definitely doable in C but I don't know if LabVIEW allows it).

  • How do I use "LabVIEW dll import wizard" to import NETAPI32.dll

    I am trying to use the LabVIEW dll import wizard for the first time. I am not very familiar in C-coding so this might be a good help instead of configuring CallLibraryFunction nodes myself.
    I want to import NETAPI.dll. I am interested in several functions in that dll, but my main priority is the funtion NetUserGetInfo(). On MSDN I have found that the header file for the mentioned function should be: lmaccess.h (include lm.h).
    My problem is this:
    The shared library contains 317 function(s). But no function is found and recognized in the header file. The following function(s) cannot be wrapped. If you want to import these functions, please review the warning messages next to the functions below. You will need to fix the problems before you can continue with the wizard.
    The function cannot be imported into LabVIEW. This might be caused by one of the following problems:
    The function is not declared in the header file but is exported in the library.
    Check the header file to make sure it contains declarations of the function.
    Undefined symbols can prevent the wizard from recognizing functions and parameters. To correct this problem, check the header file to determine if you must add predefined symbols. Click the Back button to return to the previous page of the wizard to add a predefined symbol (for example, "NIAPI_stdcall = __stdcall" or "NIAPIDefined = 1").
    MIDL_PASS;_STDCALL_SUPPORTED;__cplusplus;
    Any suggestions how I can solve my issue?   

    astrid wrote:
    I am trying to use the LabVIEW dll import wizard for the first time. I am not very familiar in C-coding so this might be a good help instead of configuring CallLibraryFunction nodes myself.
    I want to import NETAPI.dll. I am interested in several functions in that dll, but my main priority is the funtion NetUserGetInfo(). On MSDN I have found that the header file for the mentioned function should be: lmaccess.h (include lm.h).
    My problem is this:
    The shared library contains 317 function(s). But no function is found and recognized in the header file. The following function(s) cannot be wrapped. If you want to import these functions, please review the warning messages next to the functions below. You will need to fix the problems before you can continue with the wizard.
    The function cannot be imported into LabVIEW. This might be caused by one of the following problems:
    The function is not declared in the header file but is exported in the library.
    Check the header file to make sure it contains declarations of the function.
    Undefined symbols can prevent the wizard from recognizing functions and parameters. To correct this problem, check the header file to determine if you must add predefined symbols. Click the Back button to return to the previous page of the wizard to add a predefined symbol (for example, "NIAPI_stdcall = __stdcall" or "NIAPIDefined = 1").
    MIDL_PASS;_STDCALL_SUPPORTED;__cplusplus;
    Any suggestions how I can solve my issue?   
    Sorry I forgot the attachment, but here it is.
    Attachments:
    NETAPI32.doc ‏103 KB

  • How can I calling LabView DLL within LabView and pass similar Data Types?

    I am trying to use an Instrument Driver, which is created in LabView6.1 as a DLL. At this point I have only LabView to test this DLL. I was wondering, is there easy way to find out what sort of Parameter or Data Type I should be using.
    How can I pass the following data with in LabView:
    LVRefnum as Type?
    LVBoolean as Type?
    TD1 (a structure) as Type?
    It is funny to see that I am able to create a DLL in labview but having trouble calling it within LabView. I thought, it would be easier to test the DLL within the same environment.
    Basically, I am more worried about the VISA calls that are used in the driver to communicate with instrument. Because, there is no link to �VISA32.dll� in
    the header file, is that handled by the LV Run-time engine? I guess more details are needed on using the LabView DLL within LabView from National Instrument Technical Support.
    Attachments:
    RL5000.h ‏1 KB

    A LVRefNum seems to be an unsigned long data type (32bit). You can cast it
    in LV then use that as a parameter to call the DLL. (an Occurrence type
    seems to be a Ulong32)
    When you created the DLL what was the resulting type for the LVRefNum?
    Happy Holidays
    "Enrique" wrote in message
    news:[email protected]..
    > I see...
    >
    > After doing some research, it seems to me that there is no easy way to
    > find out the type of data, other than looking at the header file and
    > have documents like Using External Code in LabVIEW handy. The
    > following information is from that document:
    >
    > LVBoolean is an 8-bit integer. 1 if TRUE, 0 if FALSE.
    >
    > LabVIEW specifies file refnums using t
    he LVRefNum data type, the
    > exact structure of which is private to the file manager. To pass
    > references to open files into or out of a CIN, convert file refnums to
    > file descriptors, and convert file descriptors to file refnums using
    > the functions described in Chapter 6, Function Descriptions.
    >
    > I know you are creating a dll in LabVIEW, but I am pretty sure the
    > information applies as well and is useful. For your dll this can be
    > interpreted that, rather than passing a LVRefnum, try passing the file
    > descriptor.
    >
    > From the header file, is can be deduced that TD1 is a cluster in
    > LabVIEW.
    >
    > You are right in saying that "more details are needed on using the
    > LabView DLL within LabView from National Instrument Technical
    > Support.".
    >
    > Enrique

  • How to call a labview dll from excel-VBA?

    How to call a simple Labview DLL from Excel VBA?
    I have seen examples of DLL calls from VB but does it work the same way for VBA? I have 2000 excel and Labview 8.5. I created the DLL and tried to call it from VBA using the same type of code as in NI's website example(ofcourse its a bit diff with 8.5)
    http://zone.ni.com/devzone/cda/tut/p/id/...
    BUT it errors out when called from excel
    ERROR: The object invoked has disconnected from its client

    You would need to provide more details about the LabVIEW DLL, such as the prototypes of the functions (VIs) that you're trying to call, and your actual VBA code. Specifically, what object you're trying to create. You should also make sure the Run-Time Enginer is installed, as well as any required libraries such as the VISA Run-Time if you're using VISA. Have you made sure to enable the ActiveX server for the DLL?
    A search yielded the following items that you may wish to peruse:
    http://forums.ni.com/ni/board/message?board.id=170&message.id=261345&requireLogin=False
    http://forums.ni.com/ni/board/message?board.id=170&message.id=45099&requireLogin=False
    http://forums.ni.com/ni/board/message?board.id=170&message.id=299209&requireLogin=False
    http://forums.ni.com/ni/board/message?board.id=170&message.id=195846&requireLogin=False

  • How to pass Visa Resoure Name parameter to labview dll in labwindows​​/cvi

    Hi, everyone
    I build a dll from labview, the prototype is : double  getchannelpower(double f, uintptr_t *VISAResourceName);
    I don't know how to pass VISAResourceName to this function.How can I get the VISAResourceName of this type(uintptr_t *)?
    Is it related to the paremeter ViPSession in function viOpen(ViSession sesn,ViRsrc rn,ViAccessMode am,ViUInt32 ti,ViPSession vi)?
    BRs,
    lotusky

    1. uintptr_t *VISAResourceName in the labview dll is connected to viOpen function as input parameter internally.
    2.I can call the labview dll in labview via CLF Node, when the VISAResourceName parameter is set  to Numeric(32-bit int or 32-bit usigned int) OR Adapt to data(Handle by Value). And I got the value of the VISAResourceName parameter, which is 0; When I directly connect 0 to the dll, it still works. But in labwindows, when  I pass 0 to the VISAResourceName parameter of the dll function, I got a FATAL RUN-TIME ERROR: The program has caused a 'General Protection' fault.
    mkossmann 已写:
    Could you check what exactly uintptr_t *VISAResourceName in your labview dll does.Might it be that it is connected to the labviews Dll internal ViOpen() ViSession output parameter ?.   And the name VISAResourceName is misleading.
    Another idea would be that Labview uses 32bit Unicode for the ResourceName. And you have to convert the C String to that Unicode first.

Maybe you are looking for