Calling a dll function that as a structure

I'm trying to call the following function with the Call library function node:
XLstatus xlLinSetChannelParams (
XLportHandle portHandle,
XLaccess accessMask,
XLlinStatPar statPar)
The statPar parameter is a stucture which is define as follow
typedef struct {
unsigned int LINMode
int baud rate;
unsigned int LINVersion;
unsigned int reserved;
} XLlinStatPar;
I used a cluster to pass the data to the function but labview is crashing everytime. The  C output of the CLFN is :
typedef struct {
 unsigned long LinMode;
 long baudrate;
 unsigned long Linversion;
 unsigned long reserved;
 } TD1;
long _xlLinSetChannelParams28(long portHandle, uInt64 accessMask,
 TD1 *statPar);
Why is labview sending a pointer to the struct instead of the structure itself? Is this the cause of my problem? Any Solution?

The CLFN ouput shown in my previous message was done with the "handle to value" parameter. As you stated, it sends a reference to the struct memory location.The problem is that i need to pass the structure value as an input and not a pointer to it (well, that's what i think the problem is). I read the various documents about CLFN and I tried the examples but they are all have function of that kind:
returnval ExampleFunc (structPointer *struct)
While the function in my dll is made like that
returnval ExampleFunc (structValue struct) (see the real function in my first message)
I included the dll and Vi and documentation for the xlLinSetChannelParams function.  The CLFN node that calls it is the fourth one (the one with a cluster as input). The first 3 CLFN are used to call the initialization function:init driver,get channel and open port.
Attachments:
LIN test.zip ‏130 KB

Similar Messages

  • Calling CVI DLL Function from Visual Studio

    HI all ,
    Iv'e created a DLL using CVI and i'm tring to call one of it's function from visual studio 6.0
    I'm getting a general error , is there a specific prototype that i need to set my functions in ordrer to call them ?!  
    Kobi Kalif
    Software Engineer

    You will need to distribute the CVI RTE along with your DLL, since anything you write in CVI is going to use the RTE.
    As far as calling the DLL functions, you can use the CVI defined macros
    <return type> DLLEXPORT DLLSTDCALL <function name> (<param1 type> <param1> ...) {
    to declare your functions in the DLL for access by a VS application.
    for example
    int DLLEXPORT DLLSTDCALL myfunction (int funparam1, double func param2) {
    There are options for identifying which functions to export from your DLL, I use "functions marked for export" but there are other choices available.  I also include a type library so when you type the name of a DLL funciton in VS6 you see a balloon popup with the function signature.  This is a check box in the target settings.  You have to create a ".fp" file (function panel file) to collect the function info for the library.
    From VB6 you can access the DLL a couple of ways, but I usually add the DLL as a reference.

  • Can Ora_ffi call ActiveX DLL function???

    Hi, Can I call an ActiveX DLL function using ora_ffi or by any other means? Ora_ffi documentation says that it can call C dll functions.Can I call VB dll functions from forms PL/SQL.

    Hi, I don't have any experience in calling DLLs, but you may want to give this a try.
    report zrich_0001.
    data: path type string.
    path = 'C:WINDOWS<the_file_Name>.dll'.
    call method cl_gui_frontend_services=>execute
       exporting
         application            = path
      exceptions
        cntl_error             = 1
        error_no_gui           = 2
        bad_parameter          = 3
        file_not_found         = 4
        path_not_found         = 5
        file_extension_unknown = 6
        error_execute_failed   = 7
        others                 = 8.
    Regards
    Rich Heilman

  • External call to DLL function

    Hi Experts,
    can anyone tell me the best way to call a dll function from within ABAP?
    Thanks,
    Jennifer

    Hi, I don't have any experience in calling DLLs, but you may want to give this a try.
    report zrich_0001.
    data: path type string.
    path = 'C:WINDOWS<the_file_Name>.dll'.
    call method cl_gui_frontend_services=>execute
       exporting
         application            = path
      exceptions
        cntl_error             = 1
        error_no_gui           = 2
        bad_parameter          = 3
        file_not_found         = 4
        path_not_found         = 5
        file_extension_unknown = 6
        error_execute_failed   = 7
        others                 = 8.
    Regards
    Rich Heilman

  • Error when calling a DLL function

    Hi,
    I am using external C++ code with labView. One of the DLL functions I use serves to call files. The directory and the name of the file is is passed as a parameter for this function. When the VI is running and arrives at this function (I use the Calling Library Function Node tool), the following message is displayed:
    ERREUR de type class boost::filesystem::filesystem_error.
    boost::filesystem:ath: invalid name "D:\Documents Johan\Johan\Stitching\Fichiers de mesure\front parfait\13z2" in path: "D:\Documents Johan\Johan\Stitching\Fichiers de mesure\front parfait\13z2"
    I do not know why this message is sent to me.
    Thanks for your answer
    JF

    Hello,
    How are you passing the file path to the DLL -- are you passing it as a
    string?  If you are passing at as a string, I would do some basic
    console output to make sure that your DLL is receiving the file path
    corectly as a string and perform your appropriate C++ function in your
    DLL.  If the error is occuring with passing the file path you
    might want to check out the links below for a little more information
    on this.
    http://zone.ni.com/devzone/conceptd.nsf/webmain/7d6a20fe02edbf318625690700704cf3#4
    http://digital.ni.com/public.nsf/websearch/4E9234BA4C7C4ABE86256E3C0074760F?OpenDocument
    http://digital.ni.com/public.nsf/websearch/3B994675B17C654A86256FDD00754DD2?OpenDocument
    Hope this helps,
    Travis M
    NI
    Travis M
    LabVIEW R&D
    National Instruments

  • Using a dll function that does not have any inputs from a VI

    Hello all, I'm very new to Labview, I have wraped a dll library using the LVlib wizard and now I am trying to use it in a project.  I have a function that does not take any inputs or return any thing except that a struct is populated with some status information as part of the call.  I am able to draw a StartInterface VI because my void startInterface(const char* configFile, struct status_struct* status) takes the location of a configutation file as an input. But I can not figure out how to connect my Call Library Node to my a function vi that does not have any inputs ( void shutdownInterface(struct status_struct* status)). 
    Note that the status struct is deffined to be only and out put at the creation of the LVLIB.
    Thanks, Mike

    Thanks for the responses guys:
       I think I am aware of the conotations of inputs and outputs when I created the lvlib I specified the argument  struct status_struct* status as only an output instead of the default of input and output.
    I do not think that I am doing anything as complex as function callbacks. My immediate goal is to have an executable (I have application builder) with two buttons and two three text fields one text field for the input of the config file, two text-fields for a cstring that is contained in the status struct; one button to start the interface and one button to stop the interface. 
    This is in all likely hood a case of my self being too dense and missing something fundimental ;-)  I just can't figure out how to wire the shut down method after I've configured the call library node. See the attached pictures:
    Attachments:
    Start.jpg ‏7 KB
    shurtdown.png ‏9 KB

  • How to call Fortran .dll file that using other library files?

    Hi,
    I am trying to do some arkward tasks using LabView, and I am desperately need help....
     A little bit background:
    1. My co-worker has some code written in Fortran, where he called other libraries (many from CERNLAB or PAW). Those stuffs are pretty powerful in mathmatical calculation and simulations.
    2. In some of my LabView code, I need to call his Fortran source code in order to do some complicated calculations. I have no capablility to translate his Fortran code to Labview (or is it even possible??), so we end up with trying to use "Call library function node" where I just provide input/outputs to communicate with his code. The idea sounds simple enough?
    3. We complie the Fortran code into .dll, and then specifiy the dll in "Call library function node". The first try with a very simple Fortran code, something like c = a+b*a, was sucessful. The dll file and Call lib function worked good. It's sort of proved the concept.
    4. Now I am trying more complicated Fortran code (say Test.dll), which calling other library (.lib files) that using typical "call xxx(a,b,c)" line, and my nightmare started....  It seems nothing was excuted when I call Test.dll in LabView.
    Questions:
    1. How do LabView know if the Test.dll code needs functions from other .lib files? Do I need to copy all the .lib files to a specific folder?
    2. When I create .dll file, for LabView to be able to use it, are there any special requirement on the way the .dll is compiled?
    3. Seems there is mismatch btw the data type in Fortran and LabView. For example, LabView's  Signed 8-bit Integer seems different with a integer in Fortran. How can i know the correlation btw data type in different langurage, i.e. LabView vs Fortran?
    4. Are there any good examples that I can take a look?
    I would highly appreicate any suggestions/helps!
    Rgds,
    Harry

    You are aware that Intel Visual Fortran is the successor to Compaq Visual Fortran (I think you made a mistype with the Virtual)? So an upgrade might be at its place.
    Anyhow I'm really not familiar with Fortran at all, but lib files are usually compiled into an EXE or DLL and not loaded dynamically. 1) 
    So there should be no problem with locating those libs. What most likely is a problem are other DLL dependencies such as any Fortran Runtime library or possibly other third party DLLs the more advanced code in your DLL might be using.
    Typically most compilers can be configured to link the runtime library code statically into the DLL, as altenbach reports for the Intel compiler, otherwise you must make sure to install the  redistributable Fortran Runtime Library for your compiler. Besides that you must make sure to find out what other runtime dependencies your code might have and install them.
    1) One exception I know of is LabWindows CVI which allows to also load lib files dynamically. This is supposedly a legacy feature from LabWindows for DOS, which allowed that feature to simulate dynamic module loading in order to swap modules at runtime to work around the 640k memory limitation of DOS.
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions

  • FRM-40734 when calling external DLL Function from Forms 6

    Even though some answers were given to my previous help request ("Again: Forms 6 and user-defined data types") I wasn't able to solve the problem of passing a parameter of an user-defined type to an external DLL function residing in the SECURSIGN.DLL library (the closest solution was to declare that "composite" parameter using the ROWTYPE clause referencing a custom-made table created just for the sake of defining that perticular datatype).
    So I concentrated on SECURSIGN.DLL functions using more trivial data types, like a function requiring just four character strings as parameters.
    I generated the necessary PL/SQL support using the FFI.
    I discovered that also the simplest calls to external functions fail at runtime with the generic error FRM-40734.
    I located the error: it happens just at the moment of calling the function from within the FFI-generated package body. Before that, the DLL is loaded with no problem, the function is correctly registered, and a function handle is regularly returned.
    As long as I can regularly issue the very same call with the very same parameters from Visual Basic, I can't understand what's going wrong (ALL the needed DLL are in the same directory as the FMB/FMX forms).
    I will greatly appreciate any help that You may be able to provide.

    I have noticed just now that a dump file having a name like ifrun60_dump_299, is generated by FORMS every time I issue the aborted call to the foreign function.
    Inside the form dump file, apart from useless info like Registers and so on, the message:
    "Could not find Module32First"
    By a FILE/FIND/CONTAINING TEXT I searched all the DLLs, and I noticed that Module32First is a routine that can be found within each of the following DLLs:
    Cl32
    d2kwut32
    d2kwut60
    I tried to load those DLLs along with SECURSIGN.DLL by modifying the PROCEDURE LoadLibrary into the FFI-generated PLL code, and I have apparently no problem in loading all the DLLs that I wish, but the error persists, and that dump file is constantly generated, always looking for the "Module32First" routine.
    How can I avoid all that mess and the FRM-40734 error??

  • Type librarys for DLL functions that TestStand understands for parameter information

    Using the C/C++ DLL call adapter I would like to specify a call to a DLL function and have TestStand (3) understand the parameter information.
    Usually it says 'there is no parameter information available'. Today however I tried building a DLL in Visual C++ instead of CVI and got a bit further. TestStand recognized that there WAS parameter type information but then said 'The type library for this DLL does not contain enough information to determine whether this function parameter is a pointer to a single item, or an array of items."
    So in a nutshell, does anyone know what options (in CVI or MSVC) I need to build with so that TestStand recognizes the function prototypes exported in the DLL? After all it's alot of work to type in all that parameter information.
    Many thanks,
    Ronnie
    TestStand 4.2.1, LabVIEW 2009, LabWindows/CVI 2009

    In CVI, you can get the parameter information into a DLL. First of all, you have to have a function panel (.fp) file with all of your exported functions defined as function panels. From this function panel file you can also generate a windows help file to document your DLL. Once you have the .fp file and .hlp file, you can enable references to them in the build target settings (Build->Target Settings...). Select "Type Library..." and check "Add type library resource to DLL" and "include links to help file" then browse to your .fp file. If there are descepencies between the functions defined in your .fp file and the actual functions you have exported in the DLL, then you may get a compiler error.
    --Peter

  • Memory leak in JCO when calling an ABAP-function that returns larg tables

    Hello everybody,
    I think discovered a memory leak in JCO when the calling functionions that have exporting tables with large datasets. For example the ABAP-function RFC_READ_TABLE, which in this example I use to retrieve data from a table called "RSZELTTXT", which contains ~ 120000 datasets. RFC_READ_TABLE exports the data as table "DATA".
    Here a simple JUnit test:
    http://pastebin.ca/1420451
    When running it with Sun Java 1.6 with standard heap size of 64mb I get a heapsize OutOfMemory error:
    http://pastebin.ca/1420472
    Looking at the heap dump (which I unfortunately cannot post here, because of it' size), I can see that I've 65000 char[512] array objects in my heap, which don't get cleaned up. I think, each char[512] array stands for one dataset in the exporting table "DATA", since the table contains 120000 datasets, the heap is full after the first 65000 datasets are parsed. Apparently, JCO tries to read all datasets in memory instead of justing reading the dataset to which the pointer (JCoTable.setRow(i)) currently points to and releasing it from memory after the pointer moves forward ...
    Did anybody else experience this?
    Is SAP going to remove to issue in upcoming versions of JCO?
    regards Samir

    Hi,
       Check Below links
    1) How To Analyze Performance Problems JCO
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3fbea790-0201-0010-6481-8370ebc3c17d
    2) How to Avoid Memory Leaks 
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c3e598fe-0601-0010-e990-b8622840c8c2
    Salil...
    Edited by: salil chavan on Jun 2, 2009 5:21 AM

  • How to call the DLL functions through Java

    Hello,
    I have already got a VC++ generated DLL. It has serveral functionalities. I need to call those functions from my Java Application. Now i know that it can be possible only through writing Java JNI Interfaces.
    Everywhere i only see they give an example where in they tell to create an DLL. Now how do i will call if an DLL is ready and exists.
    If anyone can give an example then it will be very helpful to me. Please mail me at [email protected] .
    Thank you
    vvpatro

    You can't call functions in an arbitary DLL form Java. You need to use JNI to produce a 'wrapper' DLL that maps Java methods to the methods in the target DLL. The purpose of the wrapper is to allow type conversion between Java types and C/C++ types. The complexity of this task depends largely on the types used in th target DLL. If the targer DLL uses only primitive types such as char, byte, int, long, string, the translation is simple and the wrapper DLL will be 'thin'. If however, the target DLL passes arrays and objects, or employs callbacks, these more work to do, and the wrapper will be correspondingly 'thicker'.
    Hope this helps.

  • Calling lvanlys.dll functions in C language

    Hi all,
    I have a program in LV that I want to porte in C/C++.
    The program calls fucntions of lvanlys.dll.
    I'd like to call them in C but I don't know the prototype.
    There are some handle as input parameters but in LV program they are not attributed.
    Have you got an idea ?
    Maxime

    Hi Maxime,
    Following nrp instructions, you should be able to know the prototype of the functions you want to call.
    here is a link that may be helpfull:
    http://digital.ni.com/public.nsf/allkb/8AE57BDA995ACCB486256AEA0062B3C6?OpenDocument
    Sincerely
    Flo
    Open Diagram First

  • Calling external (DLL) functions

    Hi everybody!
    I know this might be a special question, but i didnt find any
    solutions (whycih i could understand) to my problem:
    Is there any way to call functions from a (in C++ written)
    DLL, or any other way to get access to C++ functions?
    This would really help me, because i'd like to use Flash to
    create desktop applications, and use C++ for system integration.
    All sujestions are welcome!

    The third party tools "wrap" or 'host' the activex control
    and provide an extended api - think of them as a much enhanced
    version of the standard flash projector, which is pretty limited. I
    just know what's possible I can't speak from experience - but I
    know others here on the forums have used them.
    There is an open source type of implementation called haxe or
    screenweaver.. or something like that... but I don't know if it
    will do what you want.
    I know Zinc will because I did a quick search and it said so
    - so I guess it should! Other names that spring to mind are Jugglor
    and Swf Studio. I haven't checked these out to see if they can use
    external libraries.

  • Error when calling  external  DLL  function.

    When calling a function in Oracle, the error happens
    ORA-28575: '... error RPC connection to external procedures'
    code:
    create or replace library LibFunctions as 'c:\MyDLL.dll';
    grant all PRIVILEGES on LibFunctions to public;
    create or replace
    FUNCTION Max(num1 in number, num2 in number) RETURN number IS
    EXTERNAL LIBRARY LibFunctions
    NAME "Max"
    LANGUAGE C;
    grant all PRIVILEGES on Max to public;
    obs. Dll was created in Pascal.
    What can this error?
    tks,
    Mauricio
    Edited by: user13794390 on 19/01/2011 06:29

    It's been a while since I used extproc. Anyway, it listener.ora make sure extproc is added. I'll assume you are on Unix:
    (SID_DESC =
    (SID_NAME = PLSExtProc)
    (ENVS = "EXTPROC_DLLS=ANY,LD_LIBRARY_PATH=proper-directory-list")
    (ORACLE_HOME = path-to-oracle-home)
    (PROGRAM = extproc)
    ) SY.

  • My page has a button that, when clicked, calls a Java function that sets a PageLegend and changes an image but then FireFox reloads the page switching everything back to original values. What's up?

    This is happening with an ASP page. Not sure when it started, but the page used to work fine. The Java script is listed in the troubleshooting section. The button calls nextPic() which calls showPic(). After nextPic processes the page is reloaded.

    A good place to ask questions and advice about web development is at the mozillaZine Web Development/Standards Evangelism forum.
    The helpers at that forum are more knowledgeable about web development issues.
    You need to register at the mozillaZine forum site in order to post at that forum.
    See http://forums.mozillazine.org/viewforum.php?f=25

Maybe you are looking for