Load a complex DLLs in Labview

Hi guys:

I need to load a dll into labview, the prototype is:

running long (const char a [],
const double b,
const int c,
double d [5] [23],)
Double e [4],
);

I put the prototype in labview is:

Uint64_t function (const CStr has,

const double b,

const int32_t c,

Array2DDouble * d,.

Double * e);

but the function does not work, I suppose that it maybe some concern to the parameter d, the attached file is the config box,.

Someone tell me where is the problem?

Thank you

Good news. I have fix

Tags: NI Software

Similar Questions

  • When I run the exe file, it should load the niscope_32.dll why?

    Hello:

    I used scope in my program functions,

    and then I did it in the exe file and the installation file,

    but when I make them to another computer,

    To load the niscope_32.dll, what should I do?

    Hi ylongwu,

    You will need to install the driver OR-Scope on the deployment computer so that the code you can call the driver. You can download the driver from our Web site at drivers and updates the link below by searching our driver OR-Scope and choosing the appropriate version. I also recommend that you include the NOR-Scope driver as an extra Installer for your executable. In the setup of window construction there is a category called additional installers where you can choose the drivers and execution engines to install with your executable file. I've included a screenshot to show what it will look like for LabVIEW 8.x.

    Drivers and updates
    http://Joule.NI.com/nidu/CDs/fn/p/lang/en

  • Loading of a DLL on RT: Missing Export "DecodePointer" "Kernel32.dll" and 7 error when calling the DLL

    Hi, I recently changed to Visual Studio 2010 and Windows 7 64-bit.

    I have an existing Office RT system running RT 2009.  This system calls a DLL that I already built using Visual Studio .net 2003 and Windows XP.

    Since I've recompiled the DLL I get an error 7 file not found error when I call the RT DLL, even if I simply replaced the old DLL with a new one in the file system so the path has not changed.

    I also noticed that the message on the screen connected to the RT system during startup:

    "achieveworldpeace.dll" load error: lack of export 'DecodePointer' of ' Kernel32.dll'.

    Any ideas on this problem?  It is perhaps as simple as a switch in the compiler?

    Thank you.

    I'm not sure it's a simple switch in the project settings in Visual C. The problem is clearly in the standard C runtime library that gets linked to your DLL and refers to exports of Windows which are not available on the RT system. Don't forget that the RT system is a limited Win32 API emulation.

    I usually avoid these problems using Visual C 6 to create DLLs for LabVIEW projects. The standard library of the C runtimes will not know what Windows API reference more recent exports because they have supported even under Win95. So unless your explicitedly reference code not supported RT APIs you wouldn't have problems. If you do not use the standard C file i/o functions and management of memory in your DLL functions, you can also try to link statically C runtime libraries in your DLL, or vice versa depending on what you have now. It may or may not work. Otherwise there is not much else but by using an earlier version of Visual Studio.

  • Named Instance/Application DLL and LabVIEW FIFO

    Hi all

    I'm working on a logging of sensor application in LabVIEW 8.5.

    Each driver (written in LabVIEW) sensor has its own loop and a named FIFO correspondent the latest read values written in. One of the pilots use VISA for RS - 232 and another DLL call to a library that is interface with a USB - I2C converter.

    The main recorder reads all the of the FIFO, concatenates the data in chronological order they are sampled from the FIFO and writes in a combined log file.

    The third recorder that I add now must be written in C the nature of the sensor with it's interface. Each new data set that comes in will be written to the file. I would like to send a message in the C program to the main recorder that includes the name and the position of all writes data; This information will be concatenated in the main newspaper for purposes of time synchronization.

    My intuition first easy synchronization is to write a VI (compiled into a DLL by using the LabVIEW application builder and called from C) who will use a FIFO named to pass a string to the C recorder for the main recorder. But I don't know how the appointed FIFOs are shared between instances of the application.

    In other words, if I have a reference to FIFO named 'test' in a VI compiled and called as a DLL and a FIFO named "test" in reference to the Application Instance main (or specific application instance to the project running on the same Windows computer), point to the same structure? Alternatively, they are specific to each instance? If they are specific to each instance, what do you suggest me as a method to be less hassle to get data between instances of the application?

    Thanks in advance!

    Bradley Hughes

    My intuition first easy synchronization is to write a VI (compiled into a DLL by using the LabVIEW application builder and called from C) who will use a FIFO named to pass a string to the C recorder for the main recorder. But I don't know how the appointed FIFOs are shared between instances of the application.

    In other words, if I have a reference to FIFO named 'test' in a VI compiled and called as a DLL and a FIFO named "test" in reference to the Application Instance main (or specific application instance to the project running on the same Windows computer), point to the same structure? Alternatively, they are specific to each instance? If they are specific to each instance, what do you suggest me as a method to be less hassle to get data between instances of the application?

    Thanks in advance!

    Bradley Hughes

    Queues, semaphores etc. are not shared between all instances of the application (although they were in LabVIEW 8.0, but it really was a bug). But just because you call a DLL that uses a DLL of LabVIEW with a queue does not necessarily mean that you work in two different application instances. If however you intende to write an independent C program that runs in a separate way of the process you can certainly not connect to a queue of LabVIEW in this way. The LabVIEW DLL will be loaded in the runtime LabVIEW according to but part of your C program process.

    Even if it would make you a C DLL that you call your LabVIEW application and calls said LabVIEW DLL to communicate through the queue, you can be problem. This will not work unless the DLL of LabVIEW and the LabVIEW application that calls your DLL is written in the same version of LabVIEW. In this case, the DLL is loaded into the LabVIEW development system already running or in the case of a DBMS built in the running system. Once your main application LabVIEW and the LabVIEW DLL are not the same version, the DLL will be launched out of process in the enforcement system according to itself, that it really run in its own process.

    Rolf Kalbermatter

  • Fatal error: unable to load library "pdh.dll."

    When I double click on Skype icon, a dialog box appears. It says "Fatal error" at the top, and inside, it says: "cannot load library 'pdh.dll.'" "I can't Skype to open at all.

    I used Skype without problem the day before, and I did nothing for all the files or anything like that. I don't think so.

    I restarted my computer, uninstalled and reinstalled Skype and entered %APPDATA%\microsoft\windows\sendto and renamed the Skype folder, tried to open Skype, then renamed the file back again. None of this has worked.

    I did a scan for Malware, and he came clean. I am running a virus scan.
    Can someone help me?

    Try to run the tool (sfc.exe) System File Checker

    http://support.Microsoft.com/kb/929833

  • Call a C-built DLLS in LabVIEW

    Hello!

    I try to get knowledge on how to call DLLs in Labview.

    I found a very good example on this site:

    http://zone.NI.com/DevZone/CDA/EPD/p/ID/1513

    I downloaded and extracted the call_c_dll_in_lvnew.zipfile.

    When you try to open the sample file GenSortRandC.vi in the folder LabVIEW_code_and_DLL

    I get the following error message.

    "The procedure entry point not found RebootRTSystem in the library cvirte.dll dynamics."

    I searched on the Internet and some forums but so far without success.

    Could you please let me know if you have the same problem the example whith?

    I have the following configuration:

    -Labview 8.5.1 FDS (default installation)

    -Windows XP sp3

    Best regards

    Mattias

    Sweden

    Mattias salvation,

    I have no problem with this example. I can't run without error.

    It's maybe because I installed the CVI Run Time engine.

    Mike

  • Python, call DLLs in LabVIEW: Fatal internal error when accessing output String Cluster

    Hello

    We have compiled a DLL in LabVIEW (TestError.dll) and tried to call it from Python.

    TestError.dll includes 2 functions:

    1 testErreur: cluster 1 entry string, 1 channel indicator

    2 TestError2: 1 channel input, 1 bunch of output string

    What we try to do in Python is actually something like this:

    1 provide values to controls in the functions of the DLL.

    2. call the DLL.

    3 get the values of the indicators.

    What we have seen are:

    1 read/write operations on normal data types (string, digital) indicators/controls are OK

    2. write operation on the Cluster string entry is OK

    3. read operation on the Cluster output string is not OK. The following error is still prompted for:

    «Unrecoverable internal error: 'MemoryManager.cpp', line 437.» LabVIEW version 8.6... »

    Also joined the TestError.prj and python code.

    Grateful if someone can help to explain why we get this error and how to overcome?

    Thank you

    howmean

    What we have seen are:

    1 read/write operations on normal data types (string, digital) indicators/controls are OK

    2. write operation on the Cluster string entry is OK

    3. read operation on the Cluster output string is not OK. The following error is still prompted for:

    «Unrecoverable internal error: 'MemoryManager.cpp', line 437.» LabVIEW version 8.6... »

    Also joined the TestError.prj and python code.

    It is very logical that it does not, and the bad news is, it cannot really be implemented reliable of a process not LabVIEW.

    LabVIEW channels (and tables) are very specific species. They are then called handles, which are pointers to a pointer to a block of memory. If you have a control or indicator on its own, the Prototype configuration allows you to configure this setting as a C. LabVIEW data pointer, when creating the DLL, create heels C for each exported function and place the code to do the translation between the past C pointer to and necessary LabVIEW data handle. For strings and arrays within the cluster, there is no configuration option and the DLL is expected to pass a structure with data handles native LabVIEW in there.

    You may say that creating handles data in your calling process enough to trick LabVIEW. For the input variables that actually CAN sometimes work (but is a delicate and dangerous generally to handle this). There is no way to make it work for output variables. LabVIEW will try to resize handle to fill data in that he wants to make. This resizing is done using internal memory manager of LabVIEW. This will work only if it had been allocated by EXACTLY the same instance of the memory manager. Otherwise, it refers to a different memory segment and catastophally fail. The only way to make this work perhaps, with luck, taking your heart and prayer to the gods, is to lvrt.dll to allocate a handle that you must pass to the DLL. Still find the good lvrt.dll, which will execute your DLL LabVIEW is a major challenge.

  • Problem of memory, then I import a DLL on LabView 2010

    Hello

    I have a lot of problems with importing a file .dll on labview.

    The blocks of import to the third of fourth function and sometimes a textbox appear (as you can see in attachment).

    I tried with the import node, but it does not work (so maybe it's that I don't know how to use it really).

    I don't really know how to import the entire library, and I am really stuck.

    There is also the header and the dll as an attachment.

    Thanks for your interest.

    I didn't say it's impossible, but it is very likely well above your head. You probably have two options:

    (1) to abandon this material and get a part that has a good support for LabVIEW.

    (2) hire someone with a very good understanding about LabVIEW C interfacing and allow them to create a VI library and interface DLL for you.

    Good luck

  • DLL crashes LabView 2013 Pro, but good to EXE

    Hello

    I started having a problem older "degenerate." I had a previous post about a dll which plays a role of interface between a program running under Windows and LabView. The details are here:

    http://forums.NI.com/T5/LabVIEW/installed-program-no-Comm-with-driver/m-p/2659765/highlight/true#M79...

    Note that this isn't a double post, I just mentioned my recent problem there, when he was not that common.

    (http://forums.ni.com/t5/LabVIEW/installed-program-no-comm-with-driver/m-p/2662503/highlight/true#M79...

    Today - unknown reason - after a win system restart I can not run my development environment LabView code. When I run the main VI, it blocks all of the LabView environment during the first call of dll. This problem we had before also, but the 2nd of the 3rd test he ran OK. Today, I tried like 30 times, too many system restart. The native software spectroscope works very well too.

    Strange, if I run the exe to build, everything works fine. The problem appears only when I run LabVIEW. There is no error code, only a window appeared the first time, as I can send the error report to NOR. I can dig into some logs tomorrow at the lab, I just need to know where I can get.

    It seems that someone has also experienced similar behavior with external dll call:

    http://forums.NI.com/T5/LabVIEW/problem-DLL-crashes-LabVIEW/m-p/2562667/highlight/true#M773565

    "In the application resulting (Exe), it seems to work very well."

    What is the difference between when the dll is built in the exe file, and when it is executed from the LabView dev environment?

    Thanks for any idea and help!

    (if nothing helps, I just re - build the exe after changes to the program, but it slows down some coding)

    The last time, we have no comments from the company that created this dll, I'll try to contact again...)

    Hello

    you said that you have read the discussion in the following link:

    http://forums.NI.com/T5/LabVIEW/problem-DLL-crashes-LabVIEW/m-p/2562667/highlight/true#M773565

    Are you facing exactly the same problem?

    If Yes, then there is not much we can do. LV is an access contradication with your included DLL unless you have access to its source. You do not experience these problems with the exe since that only works on the run-time engine while the LV environment executes the code in a different way (why LV reserve this special memory on which your DLL is also trying to access.

  • Return the execution of DLLS in Labview data table

    Hi all

    I have a DLL C++ which should run continuously collect new data of some hardware.

    I can call the DLL without any problem of Labview, but I wish I had access to some digital table data in the DLL in Labview (the appellant or an another VI) during its execution.

    Working in this direction, I've already got the event validation works, i.e. trigger messages to the DLLS running in VI of the caller using PostLVUserEvent().  This would solve my problem (maybe bad) if I need only a scalar or string of each event (which works fine).

    Then I tried passing a few paintings of small integers via the event (properly by changing the input type to create the user in LV event), but it did not work (empty tables or falls down... oops!).  Perhaps events are not the way to send large paintings (say 10 ^ 4-10 ^ 5 integers) anyway...

    Can anyone suggest a way to do this?  There are functions to manipulate the values in a control of LV/indicator of the DLL running?

    Thanks a lot for any assistance, MT


  • DLL Interop.LabVIEW

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


  • Effective way to make and receive pointers with C/C++ DLLs in LabVIEW

    What is the best way to pass a handle using the dll programmed in Labwindows/CVI between call node of the Labview library?

    I read a very useful on post

    https://decibel.NI.com/content/docs/doc-9080/version/5 on and the reception of pointers with dll C in Labview.

    However, my request is for the Labview interface with a camera.  In the camera API, it defines

    #define void * CameraHandle

    And then a CamHandle variable should be used by a lot of other functions.

    In CVI, if not used as DLLs in Labview, I would

    Sub OpenCamera()

    {CameraHandle ;} CamHandle

    Sub SetParameter (CameraHandle CamHandle)

    {

    }

    void CloseCamera (CameraHandle CamHandle)

    {

    }

    If CamHandle is a type void *, how can I make it since one node/function in Labview when I use the Setup to call a library function?  In the post I read, it say how to get the value of the arrow tip using a pointer to the value, and then dereferencing pointer.  However, what I need, is to pass the pointer itself.

    Thank you very much!

    Best,

    Charles


  • DLL of LabVIEW with arrays of strings in c ++

    I'm looking to use labview to retrieve a list of gas to a txt file and then transfer this list to gas in a C++ program.

    I thought it would be easier to just list the gas transfer a string array of the DLLs in labview to my C++ program.  However, I am not able to output the list of gas using tables; I am only able to output the pointer, not the chain that makes reference to the needle.  Of course, I have a syntactic problem with my method of output.

    I have no problem out of the list of gas via a simple string.  However, the approach of single string requires multiple calls to the relevant dll.

    My code is based on the labview dll for C++ routines example titled call of Labview DLL in Visual C++ this Passes table manages in reference (http://zone.ni.com/devzone/cda/epd/p/id/1518).

    I am sure that what I'm trying to make is simple enough for an experienced programmer to Labview.  However, my labview, C/C++ and experience is limited.

    Thank you in advance for your help.

    My labview and C code is found in the attached zip file.  However, the basic C code and output resulting are:

    // Call DLL.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Array_Multiply.h" #include  #include  #include  #include  #include  using namespace std; int main(int argc, char* argv[]) { TD1Hdl handle_var3; long temp; char stringout[25]; temp=25; handle_var3 = (TD1**)DSNewHandle(sizeof(TD1)); // initialize sizes (*handle_var3)->dimSize = 1; // // Gasstring is a function that outputs a Labview array of strings. // However, I can't make this work. All I am doing is outputting // memory addresses. // Gasstring(&handle_var3); cout << "\n gasstring " << *handle_var3; cout << "\n gasstring " << handle_var3; cout << "\n gasstring " << (*handle_var3)->String[0]; //cout << "\n gasstring " << (*handle_var4)->Numeric[0]); // // Gasstring3 is just a single string. There are no issues outputting // this string. // Gasstring3(stringout,temp); cout << "\n gasstring3 " << stringout; cout << " \n enter in number "; cin >> temp ; return 0; }
    

    The output of my source code is:

    I think I understood something :-)

    cost < "\n="" gasstring ="" "=""> < lstrbuf(*(*handle_var3)-=""> String [0]);

    There are some macros useful for LStrHandles in "extcode.h", LStrBuf is one of them.

    It seems that there are no problems with memory management, you did it right.

  • String of DLLS in LabView in two strange characters

    Hello. I pass a string of DLLS in Labview and the result is correct, but there are two characters strange everytime "Gn".

    If the character that I spend is 'a', then the result is «a LARP»

    My DLL code is:

    void massiv_int(char *lv_ptr);

    _declspec (dllexport) void f_massiv (char hello []);

    _declspec (dllexport) void f_massiv (char hello []) {}

    char lv_str [10];
    char * lv_ptr;
    lv_ptr = & lv_str [0];

    massiv_int (lv_ptr);
    * Hello = lv_str [1];

    }

    void massiv_int(char *lv_ptr) {}

    char lv_local [10] = "abcdefg";
    memcpy (lv_ptr, lv_local, 10);
    }

    Could you tell me, what could be wrong?

    Thanks in advance.

    Try this:

    void massiv_int(char *lv_ptr);
    void massiv_int_NextLine(char *lv_ptr);

    LVSTR_API void f_massiv (char hello []) {}

    char lv_str [10];
    char * lv_ptr;
    lv_ptr = & lv_str [0];

    massiv_int (Hello);

    massiv_int (lv_ptr);
    * Hello = lv_str [1];
    }

    void massiv_int(char *lv_ptr) {}

    do lv_local as long as necessary (no extra characters)
    Char [] lv_local = "abcdefg";

    copies all of the characters in lv_local to lv_ptr
    strcpy (lv_ptr, lv_local);

    Add the following line
    massiv_int_NextLine (lv_ptr + strlen (lv_ptr));
    }

    void massiv_int_NextLine(char *lv_ptr) {}

    do lv_local as long as necessary (no extra characters, including LF)
    Char [] lv_local = "\nqwerty";

    copies all of the characters in lv_local to lv_ptr
    strcpy (lv_ptr, lv_local);

    }

    But make sure that the external string buffer allocated by LV is long enough to contain all the characters!

  • Half-life 2 says failed to load the Launcher DLL specified module could not be found

    Failed to load the Launcher DLL:

    the specified module could not be found

    Hi Madoo17,

    Welcome to the community of Microsoft and thanks for posting the question. I've surely you will help find a solution on the issue.

    1. Once you get this error message?

    2. it worked before?

    3 did you changes to the computer before the show?

    Perform the steps:

    Method 1:

    Put the computer in a State of boot is a way to know which application is causing this problem.

    To help resolve the error and other messages, you can start Windows by using a minimal set of drivers and startup programs. This type of boot is known as a "clean boot". A clean boot helps eliminate software conflicts.

    Step 1:

    Put your boot system helps determine if third-party applications or startup items are causing the problem. If so, you need to maybe contact the manufacturer of the program for updates or uninstall and reinstall the program.

    Follow the steps in the link below to do the same thing:

    How to configure Windows XP to start in a "clean boot" State

    Note: After troubleshooting, be sure to set the computer to start as usual as shown here:

    Step 2: To configure Windows to use a Normal startup state

    After you have used the boot is a way to solve your problem, you can follow these steps to configure Windows XP to start normally.

    a. Click Start and then click Run.

    b. type msconfig and click OK. The System Configuration Utility dialog box appears.

    c. click on the general tab, click Normal Startup - load all services and device drivers and then click OK.

    d. When you are prompted, click on restart to restart the computer.

    Method 2: Use the (SFC) System File Checker tool.

    SFC system gives an administrator the ability to scan the files all protected to check their versions. If the System File Checker detects that a protected file has been replaced, it retrieves the correct version of the file in the folder cache (% Systemroot%\System32\Dllcache) or the Windows installation source files and then replaces the incorrect file. System File Checker verifies and repopulates the cache folder also. You must be logged in as an administrator or as a member of the Administrators group to run the System File Checker.

    Check out this link to do the same thing:

    Description of Windows XP and Windows Server 2003 System File Checker (Sfc.exe)

    Hope this information helps. Please reply back with the State so that we can help you.

Maybe you are looking for