I want to call DLLs generated in LAbWindows CVI in Borland C++ (BCB 6)

Hi,
I want to call DLLs generated in LabWindows CVI in Borland C++, I am using BCB 6 and LabWindows CVI 8.
I am able to call these functions in VC++, But getting following error in BCB
":[Linker Error] 'D:\GAJANAN\CVIDLL.LIB' contains invalid OMF record, type 0x21 (possibly COFF)"
Please somebody suggest me how to solve this problem.
Thanks and Regards
Gajanan

Duplicate post.

Similar Messages

  • Using DLLs created with LabWindows/CVI 8.0.0 in LabWindows/CVI 8.0.1

    Hi,
    I have created a project containing some methods with LabWindows/CVI 8.0.0 and then build the project and generated the DLL and LIB files. These DLL and LIB files are working fine in another projects created in LabWindows/CVI 8.0.0 (even on another machines).
    But when I use these DLL and LIB files in a project created with LabWindows/CVI 8.0.1 on another machine and try to call the methods of these files, the following error occurs: -
    "The program has caused a 'Unknown' fault at 001B:7C812AFB"
    Is this error occurs due to ther version mismatch or there is some other problem?
    Please help me to resolve this issue.
    Thanks,
    Sarabjit Singh

    Judging from this, I don't think NI has a newer version of this tool:
    http://forums.ni.com/t5/Measurement-Studio-for-VC/Convert-project-from-LabWindows-CVI-to-Visual-Stud...

  • Permission Denied Error when calling Matlab script from LabWindows​/CVI

    Hello,
    I am reading in data from a DAQ and am writing it to a .csv file in LabWindows/CVI.  I am then sending this data to Matlab to be filtered.  I would like the filtered data to be accessed by LabWindows/CVI so that I can display it as a strip chart.  I have gotten everything to work except the writing to a file in a Matlab script that is called from LabWindows/CVI.  I am basically using the shipped example in found in the activex demo. (http://zone.ni.com/devzone/cda/epd/p/id/2994). I select the script that I want to run and each time it tries to open a file with write permissions I get a "Permission Denied" error.  This occurs when using fopen() in Matlab.  I have also tried using csvwrite() as well as dlmwrite().  Each one gives me a similar error.  The script currently does not try to do any data processing.  It just opens the file, if it is successful it then prints "hello" and then closes it.  The script works well when it is run in Matlab, just not when it is called in LabWindows/CVI.  Below is the script.  Any thoughts, comments or suggestions are greatly appreciated.  I am also open to using other approaches for sending data between Matlab and LabWindows/CVI.  Thanks in advance!!
    fclose('all');
    [file, errmsg] = fopen('out.txt', 'w');
    if(file<0)
        disp(errmsg)
    else
        fprintf(file, 'hello');
        fclose('all');
    end;
    [file, errmsg] = fopen('out.txt', 'w');
    if(file<0)    
    disp(errmsg)
    else  
     fprintf(file, 'hello');    
    fclose('all');
    end;

    I am using Windows 7.  I am running CVI as an administrator and was able to get rid of the "Permission Denied" error by going into the User Account Controls in windows and changing it to "Never Notify".  However, this did not fix the problem of Matlab not being able to write to a file when the script is run from CVI.  In the Matlab code below, It now gets in to the "else", suggesting that fopen() returns a good file handle.  After getting in to the else statement, it will not actually write to the file, nor does it create it.  However, I can make changes to the plot settings and those appear.  Everything is functional when run from Matlab but when run from CVI, things get screwy with opening the file for writing.  It handles the read well.  It seems like there would have to be some file permission errors but, in the CVI program, I open and write to the file "in.csv".  Any help is greatly appreciated.
    clear;
    fclose('all');
    t = zeros(1000);
    t = csvread('in.csv');
    for i=1:1000
        t(i) = t(i)*4;
    end;
    [file, errmsg] = fopen('out.txt', 'w');
    if(file<0)
        disp(errmsg)
    else
        fprintf(file, 'goodbye');
        for i=1:1000
            %t(i) = t(i)*3;
            fprintf(file, '%f,', t(i));
        end;
        fclose(file);
        plot(t/3, t);
        ylabel('t');
        xlabel('Time (s)');
        title('Is this really working?!?');
    end;
    Thanks,
    Chris

  • "HOW to use Labview call Dll compiled by VC++"

    "hello,I use VC++ compile a DLL,and i want to call DLL Function in LABVIEW program.But there is a dll function
    when i call it in labview.There is error.The prototype of Dll Function that make error is "USHORT DLLFUN __stdcall IBWRT(unsigned short dev_address,const char *pstrWrite)",The second paramenter is a char pointer,
    and the paramenter pass a command which content is
    "MEASURE:CURRENTC? 1A,0.001MA".
    When i use VC++ to call this function,i program followed:
    CString m_wrt;
    int ReturnW;
    m_wrt="MEASURE:CURRENTC? 1A,0.001MA";
    char buffer[40];
    strcpy(buffer,m_wrt);
    ReturnW=IBWRT(4,buffer);
    and this call is correct.
    But when i use labview to call this function.ther
    e is
    error.So, who can help me,to tell me how to call this
    function.Thanks."

    Are you asking about porting code or calling C++ code in LabVIEW?  As far as porting code, there's no easy way to move code back and forth between LabVIEW and C++.  However, if you are trying to call C++ code in LabVIEW, you can compile it as a DLL and call it in LabVIEW using the Call Library Function node.
    Chad B. » National Instruments » ni.com

  • Can I convert Labview panel to Labwindows/CVI uir file

    I a project that I want to convert from labview to Labwindows\CVI.
    I don't want to call my VI's from LabWindows.
    It is possible to convert some Labview fronts panels to *.uir files (Labwindows/CVI)
    Thanks

    Hi Artus!
    Unfortunately there is no automatic way to convert a LabView Front Panel into a Labwindows UIR.
    The only way you can do this is by creating a new interface and adding all the elements that you need, but this way would actually mean rebuilding everything based on something you already have. Sorry about the bad news
    I wish you the best day!
    Oswald Branford

  • Error: LabWindow CVI driver for Lab View 2011 (using hp4145a)

    What is the DLL for the Agilent hp4145a instrument driver?
    I am trying to convert the LabWindows/CVI Agilent hp4145 intrument driver for use in labview 2011, but keep getting errors related to an incorrect DLL.

    Hi Courtney L., 
    Your prompt response is much appreciated. Thank you. 
    I have attached the "hp4145 LabVIEW Wrapper Conversion Report" as a txt file
    - this report was automatically downloaded along with the"LabVIEW Instrument Driver Import Wizard (LabVIEW Interface Generator for LabWindows/CVI Instrument Drivers)" *(link listed below), and popped up at the end of the installation.
    If any specific details or a screenshot will also be of benefit to solving this problem, I will be able to post them by tomorrow night.
    *Link for Instrument Driver setup download:
    https://lumen.ni.com/nicif/us/infolvinstdriver/content.xhtml
    Attachments:
    LabVIEW_Wrapper_Conversion_Report.txt ‏6 KB

  • Conversion of an Instrument Driver from LabWindows/CVI to LabVIEW

    Hello All,
    Conversion of an Instrument Driver from LabWindows/CVI to LabVIEW
    http://zone.ni.com/devzone/conceptd.nsf/webmain/9A93316BEBEDB17786256FA300675A0A 
    But I can not find any hyperlinkt to download
    "LabVIEW Interface Generator for LabWindows/CVI Instrument Drivers"
    Is there any evaluation version for downloading?
    Thanks,
    nonomiya

    So strange,
    I go through three pages but does not find any entry for download,
    hmm...,
    1. After press the hyperlink,
    See Also:
    LabVIEW Interface Generator for LabWindows/CVI Instrument Drivers
    2. and for a resuest info. form.
    3. press download..
    ====
    LabVIEW Interface Generator for LabWindows/CVI Instrument Drivers
    System Requirements
    NI LabVIEW 7.1 or later
    Windows 2000/NT/XP
    Use the LabVIEW Interface Generator for LabWindows/CVI Instrument Drivers to create LabVIEW VIs for VXIplug&play and IVI-C instrument drivers from function panel (.fp) files.
    Instrument Driver Network
    Before using the conversion utility to create a new instrument driver wrapper, please visit ni.com/idnet to see if a LabVIEW Plug and Play instrument driver is available for your device. The Instrument Driver Network (IDNET) provides support for more than 3,000 different instrument models from over 170 different instrument vendors.
    Recommendations
    This utility was created for developers of C-based instrument drivers who wish to provide a LabVIEW interface, but do not develop a LabVIEW Plug and Play driver. By developing the C and LabVIEW interfaces together, it keeps the components synchronized, and eliminates the need for customers to create their own LabVIEW interfaces. Vendors should distribute the LabVIEW wrapper files with the associated VXIplug&play or IVI instrument driver, so that end users do not have to visit multiple web sites to download the complete driver.
    If you are not an instrument vendor, we recommend that you use this utility only if you have instrument driver expertise. Access to the instrument driver source code is preferred, in case you need to edit the C instrument driver in LabWindows/CVI.
    After generation, the wrapper VIs should be tested with the instrument.
    Instructions
    Once you install the software, simply access the utility from the Tools>>Instrumentation>>Import CVI Instrument Driver...menu in LabVIEW. This software replaces the built-in tool and provides feature enhancements.
    For additional information on this utility, view the resources below.
    Readme for the LabVIEW Interface Generator for LabWindows/CVI Instrument Drivers
    Submit your Driver
    Visit the Instrument Driver Network
    nonomiya

  • How to pass a pointer in labview library call function by using dll programmed in Labwindows​?

    Hi,
    I'm trying to interface a camera with Labview.  However, the camera can only be programmed by C, so I'm using Labwindow CVI.
    I need to pass a camera handle from one function to another, eg. from a opencamera function to setparameter function.  
    /* Load the Qcam driver and Open the First Camera */
    void DLLEXPORT LoadDriverAndOpenCamera()
    QCam_CamListItem cameraList[10];
    unsigned long cameraListLength=sizeof(cameraList)/sizeof(cameraL​ist[0]);
    //load the driver
    QCam_LoadDriver();
    //get a list of the cameras
    QCam_ListCameras(cameraList,&cameraListLength);
    //listLength is now the number of cameras available
    QCam_Handle hCam;
    //Open the first camera in the list
    QCam_OpenCamera(cameraList[0].cameraId, &hCam);
    Apparently, caemraId is an unsigned long (unsigned 32-bit in Labview 2012 32-bit? ) and QCam_Handle is defined as void*, so it's a pointer that points to an unsigned 32-bit.
    When I only use C for programming, I can pass hCam variable to other functions as long as it's declared as global variable.  Ex, the next function can be void SetParameter(QCam_Handle hCam).  However, here I'm trying to make a dll by Labwindows/CVI and then call LoadDriverAndOpenCamera() function through library call in Labview.  
    My question is:  How can I pass hCam to other functions in the same dll?  Do I have to add paramter to the function? For example:
    void DLLEXPORT LoadDriverAndOpenCamera(unsigned long cameraId, QCam_Handle* cameraHandle)
    And then add two lines:
    cameraId=cameraList[0].cameraId;
    cameraHandle=hCam;
    into the function?  Then I can pass cameraHandle out?  However, hCam will still have void* type.
    Even if that's the case, how can I set up library call node on Labview?  In the arg parameter set up, I don't see pointers?  It seems I cannot set up an output node to be a pointer that points to a unsigned long.
    Thank you very much for your help!
    Best,
    Charles
    Solved!
    Go to Solution.

    Hello Charles, 
    I noticed you posted a similar question here. do you have any further questions about using the call library function node? 
    Haley N
    Applications Engineer
    National Instruments

  • The problem about call dll from VB....

    Dear All.
    I have a device and  VB dll file.I want to use labview to call  dll.But Labview show "An Exception occurred within the external code ..."
    Below is  to call this dll details.
    1、FindHardware:
    Call it at beginning when load program first, it can let program auto detect printer port address and model of dso scope.
    parament
    winversion:
    winversion = 2  "Windows NT,XP"
    UIP: open UIP(2048) array
    UCP:open  UCP(1023, 1023 + 11, 6)  array
    return:
    board_model:
    dso2902_128 = 27
    Then is my program
    Could somebody tell me what's wrong?
    Attachment file is this dll.
    http://us.f1.yahoofs.com/bc/500cf3ac/bc/dll/dll.ra​r?bfd1QSDBkHPgKI9c
    Thanks.
    由 Samyang 在 10-09-2005 07:14 AM 上編輯的訊息

    I can't say I understand the documentation snippet you provides, and I also can't access the DLL, but here are a couple things...
    1. I doubt very highly that a VB DLL is built with the C calling convension. I believe you should try the stdcall instead.
    2. You have the winversion being passed by pointer, but the docs make it look like a regular integer. Is that correct?
    3. Your board model is being passed by value, but it is listed as a return value in the docs. That would indicate an actual return value or a parameter passed by reference.
    My guess is that one or more of the above is causing the stack to get corrupted or an invalid pointer to be accessed and that is generating the error. Is there anyway to see the document (pdf or webpage)?
    Brian Tyler
    http://detritus.blogs.com/lycangeek

  • How To use or call dll ?????

    Hi !
    I have created one programm and i have genetared dll of that ( Using
    LabVIEW) now i want to call that from vb.net how i can Do it
    please help
    Thanks in advance

    tst wrote:
    Lycangeek wrote:
    But you can't get a front panel control integrated into a VB.NET panel.
    Brian,
    this is obviously impossible when the control is part of a running
    program, but don't the LV style control appear in the list of
    registered ActiveX controls as ComponentWorks controls? I'm
    not near a computer with LV at the moment to check.
    No
    almost all LabVIEW controls are native implementations in LabVIEW
    itself. They have nothing to do with Component Works or Active X at
    all, although I guess the Component Works developers did get some
    inspiration from LabVIEW controls but even more probably from
    LabWindows/CVI controls.
    Exception to this is the 3D graph which is a Component Works control
    incorperated into LabVIEW through the Active X control container (and
    my own private opinion about this control is that it sucks in several
    aspects, being an Active X control is not the least of its faults).
    Rolf Kalbermatter
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • Q: Must one use special LabVIEW types (e.g. float64) for DLLs in LabWINDOWS/CVI?

    Hello,
    I have recently started compiling C code using LabWindows/CVI, and have successfully called a simple DLL function from within LabVIEW.
    I have a question about the types defined in LabVIEW's extcode.h file:
    These are defined to explicitly quantify the number of bits used for each data type (e.g. float64 instead of float) in order to eliminate ambiguity across compilers.
    When I am using LabWindows/CVI to compile, do I need to use the LabView numeric types defined in LabView's extcode.h, or can I use the standard C types (int, float, etc.)?
    Is there a distinction between having to use these special types for CIN versus shared library calls in LabVIEW?
    Thanks
    in advance,
    Frenk

    You do not have to use the defines in extcode.h, but you certainly can if you want to.
    The float64 is equivalent to CVI's "double", and the float32 is equivalent to CVI's "float".
    These correspond to the double- and single-precision types in the IEEE Standard for Floating Point Arithmetic, IEEE-754.
    I hope this helps.
    Brian

  • Call Labview generated EXE with Parameters

    Hi
    I have generated an exe  in a Lab project(bcos of the no of VIs = 300) 
    I want  to call this EXE in   Teststand  with  Parameters
    how to achive this
    mytry1)   as  executable  but  the cluster outs cant be exported to teststand 
    mytry2)  as a dll   called in Teststand  ->  I cant see  the outs (it just provides one return value)
    Attachments:
    sapouterror.PNG ‏190 KB

    Dear aparab,
    does the following article help with the DLL call?
    http://digital.ni.com/public.nsf/allkb/22BF02003B4​588808625717F003ECD67
    Kind regards

  • I want to call pl/sql procedure or function

    hi i'm in need to create record in my table throgh ADF , so i called sequence from java class (create) . its working but one major problem is if i delete one record in table means , when i create new record it ll generate next value in sequence only, ya that is the concept of sequence. that's why i want to call sql function or procedure from java class. give the syntax to call.

    San-717,
    How about this (from Steve Muench and SRDemo)
      public final static int NUMBER = Types.NUMERIC;
        public final static int DATE = Types.DATE;
        public final static int VARCHAR2 = Types.VARCHAR; 
        public final static int CHAR = Types.CHAR;
        public final static int ARRAY = Types.ARRAY;
        public final static int BOOLEAN = Types.BOOLEAN; /* this may be illegal??*/
        public Object callStoredFunction(int sqlReturnType, String stmt,
                                            Object[] bindVars,
                                            String callableStatementString,
                                            boolean pRunPreAndPostMethods) {
            if (pRunPreAndPostMethods) {
                runBeforeJDBCCall();    
            CallableStatement st = null;
            try {
                // 1. Create a JDBC CallabledStatement
                st =
            getDBTransaction().createCallableStatement(callableStatementString, 0);
                // 2. Register the first bind variable for the return value
                    st.registerOutParameter(1, sqlReturnType);
                if (bindVars != null) {
                    // 3. Loop over values for the bind variables passed in, if any
                    for (int z = 0; z < bindVars.length; z++) {
                        // 4. Set the value of user-supplied bind vars in the stmt
                        st.setObject(z + 2, bindVars[z]);
                // 5. Set the value of user-supplied bind vars in the stmt
                st.executeUpdate();
                // 6. Return the value of the first bind variable
                     return st.getObject(1);
            } catch (SQLException e) {
                throw new JboException(e);
            } finally {
                if (st != null) {
                    try {
                        // 7. Close the statement
                        st.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                if (pRunPreAndPostMethods) {
                    runAfterJDBCCall();    
        }

  • Call DLL from PL-SQL block

    Hello all,
    I want to call a function located in an external DLL from a PL-SQL block. I execute the followin steps :
    1. Create a database library pointing to the external DLL :
    create or replace library libstk as 'C:\SUMMIT\libstkdte_s_trade1.dll'
    2. Create the definition and the body package :
    CREATE OR REPLACE PACKAGE dllcall IS
         FUNCTION s_trade (
              s_in VARCHAR2 )
    RETURN VARCHAR2;
    PRAGMA RESTRICT_REFERENCES(s_trade, WNDS);
    end dllcall;
    show errors
    CREATE OR REPLACE PACKAGE BODY dllcall IS
    FUNCTION s_trade (s_in IN VARCHAR2) RETURN VARCHAR2
    IS EXTERNAL
    NAME "s_trade"
    LIBRARY libstk
    PARAMETERS (s_in           STRING,
    RETURN STRING);
    END dllcall;
    show errors
    set serveroutput on
    3. Start the PL-SQL block calling the external function. And I got the foolowing error :
    1 begin
    2 dbms_output.put_line ( dllcall.s_trade ( '<Request> ' ||
    3 '<CurveId>MYCURVE</CurveId> ' ||
    4 '<Mode>02</Mode> ' ||
    5 '<ExpCcy>GBP</ExpCcy> ' ||
    6 '<AsOfDate>20001023</AsOfDate> ' ||
    7 '<Entity>***SUMMIT-XML***</Entity> ' ||
    8 '</Request>') );
    9* end;
    10
    11 /
    begin
    ERROR à la ligne 1 :
    ORA-06520: PL/SQL: Error loading external library
    ORA-06522: Unable to load DLL
    ORA-06512: at "V31.DLLCALL", line 0
    ORA-06512: at line 2
    The "Read - Execute permissions" of the DLL file was given to "Authentified users" .
    What's wrong ?
    TIA
    PS : NT2K environment, DB 8.1.7
    R. Charles Emile

    Yes, a RPC was set up.
    Listner.ora
    LISTENER =
    (DESCRIPTION_LIST =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = Server1)(PORT = 1521))
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = NMP)(SERVER = Server1)(PIPE = ORAPIPE))
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    SID_LIST_LISTENER =
    (SID_LIST =
    (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ORACLE_HOME = E:\Oracle\Ora81)
    (PROGRAM = extproc)
    tnsnames.ora
    extproc_connection_data =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    (CONNECT_DATA = (SID = PLSExtProc))
    Thanks
    RCE

  • Calling Dlls from LabVIEW

    LabVIEW Gurus:
    I am working with some software engineers who have no experience in LabVIEW. Unfortunately I have little experience in C/C++ to make sense of their inquiry.  
    Basically we are dealing with “Data Marshalling”. I will call a DLL and issue a command (string) and get back a 2-D array and an integer. So far so good.
    The C/C++ programmer requested that I provide them with a pointer/memory address in which they will store data, so I can read it once the dll returns the array and integer. I browsed through the example online http://decibel.ni.com/content/docs/DOC-1690 and thought that if I wanted to read from the dll, the process is a simple as calling the appropriate function and configure the parameter (no pointers needed).
    So, is there a specific way that they need to write the C/C++ code to be used in LabVIEW? Or what else to I have to take into consideration?
    Thank you,
    Santiago 

    That example is pretty simplistic as it only deals with integers. In this case no pointers are required since everything is returned by value. When you're dealing with arrays, however, you need to deal with pointers. If you open the Example Finder (Help -> Find Examples) and search for "dll" you will see the "Call DLL" example. That contains many examples of how to call DLL functions with a wide variety of datatypes. I strongly suggest looking at that example. There is also a chapter in the LabVIEW Help on calling DLLs (Fundamentals -> Calling Code Written in Text-Based Progamming Language).
    You have 2 things to consider:
    You're dealing with arrays - this means you typically need to pre-allocate the memory in LabVIEW, and it sounds like that's what the DLL expects you to do. This amounts to using the Initialize Array function to create your 2D array of the appropriate size and datatype.
    You may be dealing with a C++ DLL. LabVIEW can only interface to C DLLs. This doesn't mean that you can't create a DLL in C++, but it does mean that the C++ programmers need to add an extern "C" modifier to the function calls, otherwise you get name mangling, and LabVIEW won't be able to call the DLL. The DLL programmers should know what that means.

Maybe you are looking for