Creating Dll with Vision Library

Greetings Board Members,
I have a small Application For which i want to make a shared DLL and test them before deploying at other co worker computer, The application uses the Labview Vision, The DLL are made by Building the DLL.
When I use the same dll and call them with labview i get an error code while the VI Modules with which DLL are made are used instead of DLL they are running OK. Can some one throw light on this issue and how it can be solved. The application is simple, Initialze USB Grabber, Snap and save image, Close Grabber. I am getting Error code in snap and save image.
Regards
Harjeet

1.What is the error number or describtion you get?
2.Do you know that you will need to have a vision runtime license ($) at the other computers where you want to run the dll?
Christian

Similar Messages

  • Create dll with arrays and call it

    I am trying to create dll with labview in order to pass a 2d array to the main program. The problem is that I don't really know how to create the function to call it (I don't know much about pointers)
    The function I have created to call the dll is void Untitled1(TD1Hdl *Array1) which is suposse to return the array created on it.
    For example, in the program attached, how should I do to pass the array to another program using dlls?
    Thanks a lot,
    Juanlu
    Attachments:
    Untitled 1.vi ‏7 KB

    The code you've provided doesn't do anything (just a control wired to an indicator) so I'm not sure what you're asking here.
    If I understand correctly, you want to build a DLL from your LabVIEW VI.  From what language will you call that DLL?  There is no standard way to pass a 2-D array.  If you can convert to a 1-D array, you can use a simple pointer.  With a 2-D array, you're stuck with LabVIEW's array representation (the TD1Hdl type), which means that whatever code calls that function will need to understand the LabVIEW data type and how to manipulate it.

  • JNI: experience in creating DLLs with G++ (mingw32)?

    Hello.
    I'm trying to create a DLL:
    --------------/HelloWorld.cpp/------
    #include <jni.h>
    #include "HelloWorld.h"
    #include <stdio.h>
    JNIEXPORT void JNICALL
    Java_HelloWorld_displayMessage(JNIEnv *env, jobject obj)
    printf("Hello world!\n");
    return;
    I previously created 'HelloWorld.java'
    class HelloWorld
    public native void displayMessage();
    static
    System.loadLibrary("HelloWorldImp");
    I created 'HelloWorld.class'.
    I created the header file 'HelloWorld.h':
    c:> javah -jni HelloWorld
    But I do not have any idea to create the DLL.
    I tried with:
    c:> g++ -I"D:\j2sdk\include" -I"D:\j2sdk\include\win32" HelloWorld.cpp -shared -o HelloWorldImp.dll
    But I get this error message when calling from 'Main.java':
    Exception in thread "main" java.lang.UnsatisfiedLinkError: displayMessage
    at HelloWorld.displayMessage(Native Method)
    at Main.main(Main.java:6)
    In order to get this message I created 'Main.java':
    class Main
    public static void main(String[] args)
    HelloWorld hello = new HelloWorld();
    hello.displayMessage();
    Does anybody have any experience in creating DLLs with G++???
    Thank you very much.

    Or is it better GCC?

  • Using an external DLL with "Call Library Function"

    Hi!
    I am trying to use an external DLL which is used from Visualbasic & Delphi:
    http://www.keb.de/common/tools/KEBCOMDriver.zip
    the protKEB.dll accesses the serial port to control an KEB frequency
    inverter.
    Unfortunatly there is no prototype header file for the DLL (no help on that
    from KEB).
    I only have a VisualBasic example program which works with the DLL.
    (Unfortunatly I am no Visual basic expert)
    To initialize the com port I have to use the function: setprotproperties &
    getprotproperties
    they are declared as:
    'Setting the protocol properties
    'ctrl is a pointer to a data structure of type tProtProperty
    Declare Sub setprotproperties Lib "protkeb.DLL" (ctrl As Any)
    'Reading the protocol properties
    'ctrl is a pointer to a data structure of type tProtProperty
    'the desired protocol is entered in ctrl.prottype before calling
    Declare Sub getprotproperties Lib "protkeb.DLL" (ctrl As Any)
    and tProtProperty is:
    Public Type tProtProperty
    ProtType As Long 'Type of Protocol (tProt)
    TimeOut As Long 'ALL protocols
    Baudrate As Long 'ANSI, HSP5
    Comport As Long 'ANSI, HSP5
    Flag As Long 'ANSI, HSP5: 01 = Sendslow
    / IP: 01 = UDP
    Port As Long 'IPort number
    Txtlen As Byte 'IP : length of following
    text or 0
    txt As String * 100 'IP : IP-Address or name
    (maximum length)
    End Type
    I already tried to use a cluster with tProtProperty entries as an Input for
    the function
    setprotproperty in a call library function with:
    Parameter Type : Adapt to type
    Data Format: Pointer to Handle
    but I always get an "exception within external code....."
    What am I doing wrong?
    How does a cluster & a "call library function node" look like that works?
    Any help is really appreciated!
    thanks
    tom
    ,-Thomas Kerberger Physikalisch-Technische Bundesanstalt-.
    | Abbestr.2-12 D-10587 Berlin fon: +49-30-3481338 |
    | mailto:[email protected] fax: +49-30-3481386 |
    `--------Labor 7.33 Messung thermischer Energie---------'

    Thomas,
    LabVIEW cannot call a DLL that has structures directly, you will need to create either a wrapper DLL or CIN that will take in all of the data individually construct the structure, and send it to the DLL function.
    For more information on what a cluster looks like in native code, I would suggest creating a simple cluster, creating a Call Library Function Node on the block diagram with a cluster input. Then right-click on the Call Library Function Node and choose "Create .c file". This will generate the data structure for the cluster and give you a better feel for it. I would then suggest going to the Using External Code in LabVIEW manual that can be found in the LabVIEW Bookshelf (Start»Programs»National Instruments»LabVIEW 6»LabVIEW Manuals or »LabV
    IEW 6.1»Search the LaBVIEW Bookshelf).
    There is also the following: Developer Zone: Passing a Variety of Data Types from DLL to LabVIEW.
    Randy Hoskin
    Applications Engineer
    National Instruments
    http://www.ni.com/ask

  • Cannot create dll with JNI

    hi all,
    i have a c++ coding for a softphone. I opened that file in vc++ and i'm able to create a .exe file from that.
    the .exe file is running fine( it is searching for the server and is getting registered there).
    now i wanted to add jni to it.
    so i have written a java program to one of the methods in the c++ program( void pjstart() ), compiled it and created a header file.
    now i replaced the c++ function with the stuff generated in the header file,( JNIEXPORT void JNICALL Java_test_pjstart(JNIEnv *env, jobject jobj) )
    now i'm unable to build that file in vc++. it is showing some errors..

    You need to start by creating a dll project in VC using a wizard. That should compile, build and you can even load it in java although it won't do anything.
    Then you implement the signatures provided in the h file that you get from javah.

  • How to create dll with visual c++ 6.0

    I have create two file ( file.h, file.cpp)
    I make a new project in visual c++ 6.0, to make dll wizard.
    and then I add code (file.h, file.cpp) in this project. But when i build it has a error.: fatal error C1010: unexpected end of file while looking for precompiled header directive.
    help me...

    Hi,
    For me, when I make the .dll file with Visual C++, I used the cl.exe to do the job. Open the dos command, type cl then see the option, you should soon find out the solution, for futher question, you can email me at [email protected] and I will reply you as soon as possible.
    With my best,
    Zike Huang(jim)

  • Call multiple functions from same dll with call library function

    hi,
    i am working on a project in wich we need to make a UI to read out a sensor network.
    the UI should be usable in any project, but every node needs a different piece of code depending on the type of sensor with wich it is equipt.
    so i need to be able to call different pieces of code when i need them, and still be able to use the UI in future projects with possibly new types of node we now don't have.
    so someone told me to use DLL's, cause then i would be able to call the code i need the moment i need it.
    but i have never worked with DLL's (just learned about this option 3 day's ago) so i have a question.
    i know i can dynamicly change the DLL i call with the call library function, but can i dynamicly change the function i call from that DLL ?
    or do i have to put a new call library function for each function i want to call, even if its from the same DLL ?
    kind regards,
    stijn

    nazarim wrote:
    ok so there is no (easy and ubderstandable) way for me to dynamicly change wich function i want to call from a certain DLL.
    but now i started wondering, the path on the call library function is not ment to dynamicly change a DLL
    but it does work so, if i am carefull, can i use it for that purpose or will labview give me a series of problems once i start using it in larger programs ?
    Thepath on the Call Library Node can be used to load a different DLL. Obviously since you can't change the function name your other DLL would have to export exactly the same function name and of course with the same parameters. This is seldom the case so it is not the main use of the path input to the Call Library Node. It's main use is as indicated to load DLLs at runtime rather than at load time of a VI. So that an application can run even when the DLL is missing, until the moment the functionality from that DLL is needed.
    If you can make sure that all your DLLs export the same function name with the same parameter you can use the Call Library Node to call into different DLLs through the path input. If however you would need to call different function names you would have to resolve to some DLL which does do the dispatching and invocation using LoadLibrary() and GetProcAddress(). But unless you need to go with DLLs for some reason using the Call By Reference Node can give you an even more flexible approach. 
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Auto Create EVENTS with existing library (already imported)

    Had an "issue" a while back where I lost all my photos. It has since been corrected via Data Rescue but... I must have imported the found photos in a manner that did not allow for iPhoto 08 to auto-create events. So I have one big event with 15,000 plus photos in it.
    Is there any option to have iPhoto create new events automatically from these photos based on picture date? New imports are fine.
    Most of the pictures have the correct exif data....
    Thanks

    Except you will have 15000 duplicates
    1 - quit iPhoto,
    2 - delete your iPhoto preferences,
    3 - drag the iPhoto library to the desktop (this will be a backup),
    4 - start iPhoto,
    5 - reset the preferences including the split items imported from the finder,
    6 - and drag the originals folder from the iPhoto library on the desktop onto the running iPhoto program - this will import all of your originals (and hopefully split them into events) into a new library - after you check it you can delete the one on your desktop (or archive it as a backup )
    LN

  • Crash "DAbort 0x37C03D in MemoryMana​ger.cpp" when calling DLL with "Call Library Function Node"

    Hi all,
    I would like to work with a LabVIEW program that I did not programm by myself.
    In this programm an external DLL needs to be called. in the Momente this dll ist called with the "Call Library Dunction Node" LabVIEW crashes with this Error Message:
    DAbort 0x37C03D in MemoryManager.cpp
    Attached is the entire Log.
    The programm runs on the computer of the original programer.
    I have never handeled with DLLs or something like that before, so I have absolutely no idea how to rsolve this problem.
    Thanks for your help!
    Attachments:
    lvlog.txt ‏2 KB

    A DLL can be compiled by different compilers. By "generic" C DLL, i refer to ANSI C (so no C++, no Borland C or something else).
    My question is raised as parameters, esp. arrays and strings, can lead to this behavior when used in the wrong way (including "Calling Convention").
    Also, interfacing with the LV memory manager can lead to crashes like this, but this wouldn't be a "generic" DLL as it binds to LV (due to LV API calls).
    Without a better knowledge on the DLL and its functions, there is not much we can help you with.
    Where does the DLL come from?
    Norbert
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • Help creating .dll with c using JNI

    Hi. I have created a JNI application that uses C to call Java. Now, I am trying to create the .dll for windows. I am using VS C++ compiler. My program compiles; however, it doesn't seem to start the JVM. I am not sure how to pass the arguments in VS C++ while builiding and running. Please let me know. Thanks.

    Hey,
    Thanks. I apologize for not being clear. I have created the dll file and an application that links to that dll and executes the code. It creates the .exe file and when I execute it, it goes through the sample() function that just prints "Hello", and then it goes through the startJVM() function where the JVM is intended to start; however, the status of JVM is returning -1. It's not able to start JVM. I have included the path for the jvm.dll and jvm.lib. But, still won't work. Please reply with suggestions/comments. Thanks again.

  • Upgrade to latest Itunes created havoc with my library!

    Has anyone else experienced this problem? I upgraded to latest Itunes and about 800 of my songs lost their association from the computer to the library and the songs wouldn't play. With more investigation, many are purchases saved on the cloud or CDs I imported but they must be stored on the cloud because there are no files on my computer so I had to reload a ton of music. Also had to delete purchased songs from my library to allow me to re-download them, another time consuming activity that I didn't plan to spend my time on today. Wondering if others are also having this problem and how to communicate it to Apple so they are aware?  Happy holidays.

              Not quite surewhat your asking exactly. You look here for different ways on importing media from nano to your computer! https://discussions.apple.com/thread/2417169?start=0&tstart=0

  • Calling a dll created with vision 7.0 from visual basic doesn't work

    I created a dll using some vision 7.0 functions and Labview 7.0 environment. I call this dll from visual basic. The dll will work fine as long as I don't stop the visual basic program execution. As soon as I stop the program execution the dll will no longer work. I must reload the visual basic environment and the call to the dll will start working again. I created the exact same dll but I created it with vision 6.0 in Labview 6i environment. It works great and has no issues.
    Attachments:
    Test.vi ‏36 KB

    Roberto N. wrote:
    Thank you Jordan, I'm using Labview 7.1.
    Anyway I've resolved the problem by adding the "lvanlys.dll" file (present in "..\Labview 7.1\resource\lvanlys.dll" path) as support file in the building process. Now the DLL containing the analysis functions works correctly.
    Natalino Roberto
    Ok, you probably got lucky since the lvanlys.dll seems to implement that function directly. However most Advanced Analysis functions are just redirected by lvanlys.dll to the Intel Math Kerneal Library that gets installed with LabVIEW 7.1 and higher. The only way to get that properly installed with your LabVIEW executable or DLL is to create a LabVIEW installer in your Application Builder and make sure to select under "Installer Settings->Advanced" the "LabVIEW Run-Time Engine" and the "Analyze VIs Support". Then use that installer to install your DLL on another computer.
    Rolf Kalbermatter
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Passing arrays with Call Library Function does not work after application builder

    Calling a DLL with Call Library Function which requires an array of data works correctly in Labview, but after building an exe with application builder, the call no longer works.  Dereferecing the pointer in the DLL retuns all 0s and not the actual values.
    Solved!
    Go to Solution.
    Attachments:
    TEST.zip ‏28 KB

    I did not run your code because it is a little unclear to me what it does.
    Two things:
    First, is the DLL you are calling the DLL-ified version of PopUpNames.vi? Then the problem is likely that the panel is not being built into the DLL.
    When LabView builds an application / dll, it strips the front panel and block diagram from all VIs that it doesn't think need to show a panel at run time. This reduces file size and increases code security. The App Builder's panel inclusion logic can be overridden by Build Specifications -> Source File Settings -> Remove front panel. A better method is to put a property node on a control in a window you want to show marking it "visible"; this is sufficient to tell the App Builder it should keep the panel.
    Currently Source File Settings shows "no dependencies" (clearly incorrect---another evil side effect of Express VIs I guess) but if you change the settings as shown below to keep ALL panels, one might hope the App Builder can figure it to keep the panel when it deconstructs the Express VI. (Alternatively convert the Express VI into a regular one.)
    A second comment: I am a bit flummoxed at the larger goal here. You are calling LabView DLL from LabView, which doesn't make a lot of sense, so I assume your larger goal is to call LabView from C or vice-versa. In that case be aware that your DLL is x86 (32-bit) but you are passing 64-bit ints as your pointers. In this case it is 32-bit LabView with 32-bit pointers in embedeed in 64-bit containers calling 32-bit LabView with 32-bit pointers in embedeed in 64-bit containers, so it all works, but if your going to call this from C or whatnot you're going to have to follow that same design.
    When calling C code the LabView Call Library Function does have a "unsigned pointer-sized integer" data type that always appears to be 64 bits in the dev env but which actually passes a 64 or 32-bit int to the DLL depending on the environment. The "pointer sized int" has to be 64 bits in the "LabView" part of the code because LabView's strong typing requires the data type to be determined at compile time. Casting all pointers to the largest data type in LabView makes it possible to write platform-independent code, but down at the Call Library level you still have to put the right number of bytes on the stack.

  • Compatibility of developed Vision library with NI Vision Builder AI

    We developed a specific Vision library using NI LabVIEW and Vision Toolkit.
    My requirement is to identify the compatiblity of this library with NI Vision Builder AI.Can we use the existing VI's with Vision builder?
    Please provide me your comments asap.
    Regards:
    Vaibhav Kanchan
    Sr. Engineer
    NI Certified LabVIEW Developer(CLD)
    NI Certified TestStand Developer(CTD}

    There are multiple ways to add functionality to Vision Builder AI using a set of VIs you wrote:
    1) Vision Builder AI can run a VI you write that use your VIs using the Run LabVIEW VI step.
    2) You can also develop a custom step (that include the configuration page) for a better user experience, using the VBAI SDK, and use your VIs inside.
    With these 2 solutions, you will need to use a specific version of LabVIEW to integrate your library, as Vision Builder AI is a LabVIEW application, and VBAI will execute the code from the Run LabVIEW step, or custom step using the LabVIEW runtine engine that it was built with. The version of LabVIEW depends on the version of VBAI. For example, for VBAI 2011SP1, you need to use LabVIEW 2010.
    3) You can automate/drive Vision Builder AI from LabVIEW on Windows. (Open an inspection, run once, run continuously, etc, and get the resulting results and image that you can further process using your library. You can use the API on Windows with any version of LabVIEW.
    For example, the VBAI 2011 API supports LabVIEW 8.5 through 2011.
    You will run your developped application on Windows only, but it will be able to control Vision Builder AI running on remote targets.
    If you're running Vision Builder AI on Windows, I see no compatibility issues with any of the above solution, except for using the correct version of LabVIEW in the first 2 solutions I mentioned. Using 1) and 2), you will also be able to develop code that can run on targets that Vision Builder AI supports, like smart cameras, and embedded vision systems.
    If you plan to support remote targets, like smart cameras or Embedded Vision Systems, there are things to consider for your library to be compatible:
    These targets run different operating systems: some run Pharlap, some run VxWorks, all run LabVIEW real-time on these OSes. If you used LabVIEW and Vision Development module to build you library based on VDM, the only thing to consider is to make sure to use the same version of LabVIEW and Vision Development Module installed on the target. Let me explain:
    When you configure one of these remote targets from Vision Builder AI running on the Windows host machine, we install an image that contains a specific version of LabVIEW Real-time and Vision Development Module (For example, in the case of VBAI 2011 SP1, the remote target image has LabVIEW Real-Time 2010 and Vision Development Module 2011). Those should be the versions you need to use to create your VI to run with the Run LabVIEW step or custom step). We ran into some compatibility issues when customers update their Windows machine with a newer version of Vision Development Module, and write a VI or custom step they want to run in VBAI, that uses a new function that is not supported with the DLLs installed on the target.
    If your Vision Library uses some other DLLs (code you may have written in text based language or third party DLL), you will have to recompile the DLL for the operating system of the target (Pharlap or VXWorks, depending on the target) for the code to work on the remote target.
    Hope this helps and is not too confusing.
    Best regards,
    -Christophe

  • I have all my music on a external HD. How can I run iTunes on my laptop with out my EHD connected? when I open iTunes I get: Afolder containing "iTunes Library" cannot be found, and is required. Please chose or create a new iTunes library.

    It also tells me Choose iTunes Library
    iTunes needs a library to continue, you may choose an existing library or create a new one.
    I have all my music on an external hard drive (ehd) but would like to run itunes with out conecting my ehd. How can i do this? I'm

    You need the entire libary on the external, not just media.
    What are the iTunes library files? - http://support.apple.com/kb/HT1660
    More on iTunes library files and what they do - http://en.wikipedia.org/wiki/ITunes#Media_management
    What are all those iTunes files? - http://www.macworld.com/article/139974/2009/04/itunes_files.html
    Where are my iTunes files located? - http://support.apple.com/kb/ht1391
    iTunes 9 [and later]: Understanding iTunes Media Organization - http://support.apple.com/kb/ht3847
    Image of folder structure and explanation of different iTunes versions (turingtest2 post) - https://discussions.apple.com/message/13025536 and https://discussions.apple.com/message/17457605
    Once you get a complete iTunes folder on the external drive, start iTunes with the option/alt key held down and select the iTunes Library.itl file on the external drive.  You will also need to do this with your main computer or the libraries will become unsynchronized.
    Alternatively you can make a separate library using the same media on the second computer. Start as you have been doing, let iTunes create a new, blank library file which will be on hte internal drive, set the media folder location in preferences to be the one on the external drive, then add the files to the new iTunes library. Unless you are a super-organized individual, or you don't care if your libraries do not have the same content, you are better off using a single library file that is on the external, not setting up separate library files.

Maybe you are looking for