Jump to content

About LabVIEW DLL


Recommended Posts

You can find the information about public Manager Functions freely available on NI website. Also read this Using External Code in LabVIEW very useful (but kind of outdated these days) manual. But note as well that LabVIEW exports a whole bunch of totally unsupported internal functions, which are not intended for any public/production use-cases. Of course, you may figure out how they work and even try to use them in your programs, but do that at your own risks and don't let those projects out of your lab.

  • Like 1
Link to comment

There's not much. Some useful functions are documented (Moveblock, for example)

There is a file (extcode.h) which has many of the function prototypes which is located in the cintools directory. That and tribal knowledge about C and LabVIEW equivalence is usually what people use. Rolf knows a lot (I mean everything) about the underlying, opaque, structures used by LabVIEW but for most of the functions, C knowledge and extcode.h is usually all we have.

  • Like 1
Link to comment

In addition to what others have said, these undocumented functions are undocumented for a reason.  NI doesn't want to support developers calling these functions directly, they might only work in small use cases, and the functions are subject to change.  Most obviously don't change, and NI themselves would need to update the places they call a function, if for some reason the prototypes for the function were ever changed. 

So when NI does call one of these functions from a VI they will password protect the VI, to discourage developers from calling it directly.  They'd rather you call the VI they provide (if there is one), and in future versions of LabVIEW they can change this VI's connector pane to force a broken VI, or just update their own calling of the VI to use the new prototype.  If you do learn some useful function call, please do share it with the community.  Members of LAVA are generally familiar with the undocumented, and unsupported nature of these types of things.  But they can of course have value, such as Moveblock.

  • Like 1
Link to comment

ok thanks guys for all of these feedback !

 

It's for our HAIBAL project we will soon start optmisation of our code and i'm exploring différent possibilities.

We continu the work of Hugo  

Always on our famous stride ! And our dream now is to finish on xilinx platform fpga.

I want to prove that we can be efficient in calculation also with LabVIEW. (Maybe we will have to precompile as DLL a numerous part of our code to make it more efficient)

 

image.png.5923e8180482738a41e742fbeeefb46a.png

Edited by TDF
Link to comment
2 hours ago, Rolf Kalbermatter said:

Yes I'm aware that someone tried to hack them anyways into LabVIEW 64-bit and was partially successful.

It was me. And not partially. 64-bit CINs do work absolutely the same way as 32-bit CINs. I successfully managed to call all the entry points and later adapted three examples from Code Interface Reference Manual to 64-bit CINs. Moreover, I managed to make LabVIEW load external subroutines, that was impossible and unsupported in versions 8.0 to 2016. But in fact all this extra knowledge gave me nothing for my real work but wasted time and efforts. I stopped experimenting with CINs in around 2015 or so and never really came back to this legacy tech.

  • Like 1
Link to comment
On 4/15/2022 at 9:34 PM, dadreamer said:

But in fact all this extra knowledge gave me nothing for my real work but wasted time and efforts. I stopped experimenting with CINs in around 2015 or so and never really came back to this legacy tech.

Basically the point I was trying to make also in previous topics about CINs. 😀

  • Like 1
  • Haha 1
Link to comment
On 4/15/2022 at 9:34 PM, dadreamer said:

It was me. And not partially. 64-bit CINs do work absolutely the same way as 32-bit CINs. I successfully managed to call all the entry points and later adapted three examples from Code Interface Reference Manual to 64-bit CINs. Moreover, I managed to make LabVIEW load external subroutines, that was impossible and unsupported in versions 8.0 to 2016. But in fact all this extra knowledge gave me nothing for my real work but wasted time and efforts. I stopped experimenting with CINs in around 2015 or so and never really came back to this legacy tech.

 

Sorry guys if i feel to be a newbie but what is a "CINs" ?

Another question : I remember during 2011 to see that LabVIEW had a C code generator. Do you know why this option is no more available ?

 

Link to comment
52 minutes ago, Youssef Menjour said:

Sorry guys if i feel to be a newbie but what is a "CINs" ?

They are Code Interface Nodes. This is an obsolete and no longer supported technology, that was superseeded by Call Library Function Nodes. If you want to know more about CINs, take a look at Code Interface Reference Manual.

52 minutes ago, Youssef Menjour said:

Another question : I remember during 2011 to see that LabVIEW had a C code generator. Do you know why this option is no more available ?

You still can download C Code Generator package and install it onto LabVIEW (2017 is the latest version), but it's not actively maintained these days and I even suppose, that it was deprecated from LV 2020. If you want to dig this deeper, that thread may be useful for you.

Edited by dadreamer
  • Like 1
Link to comment
11 minutes ago, dadreamer said:

They are Code Interface Nodes. This is an obsolete and no longer supported technology, that was superseeded by Call Library Function Nodes. If you want to know more about CINs, take a look at Code Interface Reference Manual.

You still can download C Code Generator package and install it onto LabVIEW (2017 is the latest version), but it's not actively maintained these days and I even suppose, that it was deprecated from LV 2020. If you want to dig this deeper, that thread may be useful for you.

Thank you very much !! I will have a look it will be very usefull for us about the optimization of our execution code !

Link to comment
6 hours ago, Youssef Menjour said:

Thank you very much !! I will have a look it will be very useful for us about the optimization of our execution code !

If you want to build a product, even a free download, around the C Generator, think again! It is discontinued and will not come back ever and almost certainly doesn't work in the latest LabVIEW version without trouble. It can anyhow not officially get installed beyond LabVIEW 2017. The resulting code is, let's say "interesting", but trying to understand it is another matter. And if you end up trying to solve a problem with it, you are very likely simply ending up with at least one more problem than before, rather than one less! 😀

Edited by Rolf Kalbermatter
  • Like 1
Link to comment
17 hours ago, Youssef Menjour said:

Sorry guys if i feel to be a newbie but what is a "CINs" ?

If you want to get some more background information (including pretty much useless historical details nowadays) you may also want to read through these blog posts: https://blog.kalbermatter.nl

Edited by Rolf Kalbermatter
  • Like 1
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.