LabWindows/CVI Idea Exchange

Community Browser
About LabWindows/CVI Idea Exchange

Do you have a feature idea for how to improve LabWindows/CVI? Submit and vote on ideas now!
  1. Browse by label or search in the LabWindows/CVI Idea Exchange to see if your idea has previously been submitted. If your idea exists, be sure to vote for the idea by giving it kudos to indicate your approval!
  2. If your idea has not been submitted click New Idea to submit a product idea. You should submit a separate post for each idea. Watch as the community gives your idea kudos and adds their input.
  3. Give kudos to other ideas that you would like to see implemented!
  4. NI R&D will review ideas that have been submitted and update the status.

Note: the LabWindows/CVI Idea Exchange is not the appropriate forum to submit technical support questions.

The LabWindows/CVI R&D team is committed to reviewing every idea submitted via the LabWindows/CVI Idea Exchange. However, we cannot guarantee the implementation of any LabWindows/CVI Idea Exchange submission.

Top Kudoed Authors
User Kudos Count
Showing results for 
Search instead for 
Did you mean: 
Post an idea



it was very nice to see clang updated to version 3.3 in CVI2015; I wish this support of current versions of clang will be continued in the future, so I am hoping that with CVI2017 we might get clang 3.9 or 4.0 because of the following issues:

- many many bug fixes in clang

- improved diagnostics

- support of C11

- full support of OpenMP 3.1 and beyond



In earlier versions of CVI source files needing compilation were marked in a different color, unfortunately this feature has been removed in CVI2013. The suggestion is to re-introduce this feature...



Changing an include file immediately shows affected source files

It's always clear how time-consuming it is pushing the RUN button, i.e. if there are files *and how many) to be compiled first

My CVI application started to generate linker errors immediately after I upgraded from CVI 2012 to CVI 2013. A number of other people have reported exactly the same problem, with the linker unable to resolve symbols found in IMAQdx or nivision.


This means that the final release of the new version of CVI cannot have been tested when using the image acquisition or image processing add-ons.


I suggest that, in future, new versions of all tools are subjected to automatic regression tests against the examples distributed by National Instruments before release. Because it obviously doesn't happen now.

When building a project consisting of many files it would be much more convenient if the Build Output would jump to the line with the first file showing an error (or, if no error occurred, to the first warning).


Right now, if there is a build error I have to scroll through the (possibly long) list of files to see which file produced the error; only then I can click on the error message to have the IDE highlight the problematic line.



I would consider it useful if the Build Output would state the total number of errors in a file - right now it says: 1 file with errors, but especially if you start with many errors I find it helpful to see if a change in code reduces the error count.


To my knowledge earlier versions of CVI provided this information, which disappeared with clang integration.


Related posts are here and here

The JIT debugger option in CVI 2010 is a nice step in the right direction, but only being able to debug builds that were compiled in "Debug" mode pretty much defeats the whole purpose of the idea. Debug builds are much too slow to be used in production and on my machines, if I ever use a Debug build, it probably already runs under the debugger anyway! Seeing that CVI is not even an optimizing compiler I cannot understand why release builds cannot be properly debugged. 


Thing is, the crashes in production are the important ones that I absolutely need to be able to investigate, and CVI does not provide ANY assistance in this area apart from being able to at least generate a MAP file. This is what I currently have to do: I have included code in my application that creates a memory dump and sends it to me when the application crashes or hangs. This dump I can then load into WinDbg and with a few tricks I can at least import the CVI MAP file to get some functions names in the stack traces, but that's it, all investigations have to be done on the assembly level. To quickly decipher stack frames, e.g. to have a look at local variables, I often even have to throw my OWN code into a disassembler (IDA Pro)! I'm really glad that this way I am now at least able to debug most crashes at all, even when they happen far away in a different country, but this aren't the 80s anymore and you can probably imagine that this process is hard and time consuming and very much annyoing. With code compiled in VC on the other hand I can load a MiniDump and have a look at the stack trace, variables and code on the source level without much hassles. 


Some ideas that could help:

 - Let me (JIT) debug release builds

 - Let me load MiniDumps into the debugger or

 - create PDB files that I can use together with a debugger that can load MiniDumps (WinDbg, VS)

 - Let me not only use an external compiler but also an external linker that generates PDB files for release builds (I don't like this solution as I use C99 features VC does not support, but I'm desperate here)


Okay, rant over for now, I think I really needed to vent a bit. Thanks for reading this far ;-) 


All the best, Marcel 

well, the title says it all: extend the current partial support of C99 standard to full support

It was a nice surprise when CVI provided clang as an external optimizing compiler. In the meantime, however, the initial clang version 1.0 has been significantly improved and now is at version 3.0 - but not for CVI users...


I would suggest that NI provides a current Windows binary of the compiler for everyone with a legal copy of CVI2010 or later. As the release cycles of CVI are quite long it would be convenient to obtain, on a biannual interval, interim updates of clang.




On a side note, this also would provide some motivation to keep/renew the SSP. Right now I consider it disappointing if the equivalent of several hundred Euros is a patch of CVI only. Other major companies such as Autodesk or Microsoft provide patches free of charge...




I would like to see an configuration of batchbuilt process. I have a big workspace with many projects; and would like to create different setups, like "compile only all server projects" or "compile all client projects". The workspace contains a big server-client -based software packages; some dll-projects used for server side only, some only client side.



Is NI road map going to allow applications that are developed with CVI for Windows to run also on the Apple MAC OS as well as run on IPhone and Android Devices? The current alternative to develop the applications for the Apple MAC OS is on X-Code IDE where the code with Objective C (and Objective C++). The code that is developed with CVI cannot be ported over to the MAC OS because Objective C is not based on the ANSI C Standard. X-Code IDE is a powerful but also a clumsy IDE and can be unforgiving. NI also provides the drivers for most its hardware for the MAC. In my opinion the CVI IDE has a much better IDE than X-Code and CVI is more intuitive to use from a development perspective.  Since there is open source CLang Compiler for the MAC why can't NI import the CLang Compiler to work with the MAC and IPhone? Both Windows and MAC use the same Intel Microprocessor. Intel also has a compiler for the MAC OS that is separate from the X-Code IDE.

To develop the applications for Android devices requires the Eclipse IDE. Can CVI be adapted to develop software with the Eclipse IDE like an add-on?

Coupled with the Source Code Browser, there should be a 'Refactor' option to rename an identifier to something else. And only that one, not the homonyms from other contexts, which is something impossible to achieve with a search and replace.

  • Compiler

In principle CVI supports external compilers for an optimized release version such as Intel's ICL and I managed to successfully compile release versions using ICL 11.1.


However, documentation on this issue is sparse.


It is even worse if one attempts to use an external linker which might be appropriate if one attempts to use e.g. Intel's MKL. Here I would love to see the support of external linkers in combination with an improved documentation.


Similarly, CUDA is becoming more attractive for more demanding floating point applications - I would consider it very useful if NI could provide e.g. an application note of how to do this in an easy to follow tutorial.



  • Right now, the Break on»Library Errors function break happens for all library errors. I would like to suggest a more granular setting, i.e. break on file I/O errors, math errors, etc.


  • An additional (and most relevant) feature I suggest is the option to allow to temporarily exclude certain errors; let's say I have a loop doing some calculations and these calculations result in an ERANGE error, then it would be useful to get notified by the debugger, but only once for this loop, not 500 times... Hence after a break on library error I would like to have the (right click) option 'exclude further breaks of this function'. This should be valid for the current execution and be automatically reset when the program is restarted.


  • Also, the menu command should provide the possibility to override all SetBreakOnLibraryError functions.


Many thanks!

I'd really appreciate a warning for "empty bodies" or whatever it is called, i.e. things like



 If written like

if(...) { };

 it is OK.


  • Compiler



I don't know if it is possible technically but from a user's perspective it would be convenient for debugging a program (in debug configuration) if the UI constants could be provided in the data tooltips, too. Right now, if something is wrong with my UI I will have to do a lot of detective work to find out which control / control attribute is the problematic one...


Example: Consider the code


SetCtrlAttribute ( panel_handle, control_id, control_attribute, attribute_value );


Right now, if I hover over attribute_value, the tooltip will display something like "attribute_value = 24064". Then I will need to look up userint.h to find out which attribute value this is ( ATTR_CTRL_VAL ). It would be more convenient if the tooltip could include this information, too, and display something like "attribute_value = 24064 ( ATTR_CTRL_VAL )"


The same holds for control_id, because a number such as 14 will not immediately help me - I will have to go through the corresponding include file to find the respective UI control (e.g. TABPANEL_2_NUMERIC ).





LabWindows/CVI 9.0.1's implementation of <stdio.h> *scanf and <stdlib.h> strtod functions appears not to support reading back "NaN", "Inf", "+Inf" or "-Inf" values, although printf() can generate them. May I suggest to add functionality like described below.


Practical use would be that it's easier to propagate "invalid measurement" through strings if strto*() and *scanf() understand all classes of strings that *printf() family functions will generate.


This suggestion is in alignment with ISO 9899:1999 (withdrawn) and its successor ISO 9899:2011, i. e. C99 and C11. Note that there is a "stronger" suggestion to implement all of the C11 standard library in the idea exchange already, which - if implemented - would subsume this suggestion, but as the bare minimum, I'd certainly appreciate seeing this in CVI 2012.


Demo code:


 printf("%g\n", -NotANumber());
 printf("%+g\n", PositiveInfinity());
 printf("%g\n", NegativeInfinity());
 double x = 0; int i;
 i = sscanf("NaN", "%lf", &x); printf("i=%d, x=%g\n", i, x);
 i = sscanf("Inf", "%lf", &x); printf("i=%d, x=%g\n", i, x);
 errno = 0; x = strtod("NaN", NULL); printf("x=%g, errno=%d\n", x, errno);


Desired result:





 i=1, x=NaN

 i=1, x=Inf

 x=NaN, errno=0


Actual result: we see that printf supports NaN/Inf, but scanf and strtod do not:


 i=0, x=0
 i=0, x=0
 x=0, errno=0


Thank you.


  • Compiler

A byte array is limited to 2GB because the index is an int. Allow the use of long for an index so large arrays can be used.

  • Compiler

Tiling windows is only possible, when they are released from the IDE before. But navigating between the IDE and the released windows is difficult. It would be nice if the sourcecode and uir windows could be tiled INSIDE the IDE. Could look like this:


  • Compiler

Currently the 'long double' type has 64 bits of precision, which is the same as the 'double' type.  It would be handy on occasion to be able to use the full 80 bits of precision like is available with the Intel compiler.

  • Compiler
0 Kudos

The most recent version of the C runtime that comes with the Phar Lap ETS is msvcr90 from 2008. That really restricts the usage of more recent third-party libraries on real-time targets shipping this operating system.


Support for msvcr{100,110,120,140}, even with stubs for most of their functions, would be greatly appreciated.